<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>Repetier-Firmware: src/ArduinoAVR/Repetier/u8glib_ex.h Source File</title>

<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>

</head>
<body>
<div id="top"><!-- do not remove this div! -->


<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  <td id="projectlogo"><img alt="Logo" src="repetier-logo-trans128.png"/></td>
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">Repetier-Firmware
   &#160;<span id="projectnumber">0.91</span>
   </div>
   
  </td>
  
  
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.7.6.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
</div>
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
  initNavTree('u8glib__ex_8h.html','');
</script>
<div id="doc-content">
<div class="header">
  <div class="headertitle">
<div class="title">src/ArduinoAVR/Repetier/u8glib_ex.h</div>  </div>
</div><!--header-->
<div class="contents">
<a href="u8glib__ex_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"></span>
<a name="l00003"></a>00003 <span class="comment">  U8glib.cpp</span>
<a name="l00004"></a>00004 <span class="comment"></span>
<a name="l00005"></a>00005 <span class="comment">  C++ Interface</span>
<a name="l00006"></a>00006 <span class="comment"></span>
<a name="l00007"></a>00007 <span class="comment">  Universal 8bit Graphics Library</span>
<a name="l00008"></a>00008 <span class="comment"></span>
<a name="l00009"></a>00009 <span class="comment">  Copyright (c) 2011, olikraus@gmail.com</span>
<a name="l00010"></a>00010 <span class="comment">  All rights reserved.</span>
<a name="l00011"></a>00011 <span class="comment"></span>
<a name="l00012"></a>00012 <span class="comment">  Redistribution and use in source and binary forms, with or without modification,</span>
<a name="l00013"></a>00013 <span class="comment">  are permitted provided that the following conditions are met:</span>
<a name="l00014"></a>00014 <span class="comment"></span>
<a name="l00015"></a>00015 <span class="comment">  * Redistributions of source code must retain the above copyright notice, this list</span>
<a name="l00016"></a>00016 <span class="comment">    of conditions and the following disclaimer.</span>
<a name="l00017"></a>00017 <span class="comment"></span>
<a name="l00018"></a>00018 <span class="comment">  * Redistributions in binary form must reproduce the above copyright notice, this</span>
<a name="l00019"></a>00019 <span class="comment">    list of conditions and the following disclaimer in the documentation and/or other</span>
<a name="l00020"></a>00020 <span class="comment">    materials provided with the distribution.</span>
<a name="l00021"></a>00021 <span class="comment"></span>
<a name="l00022"></a>00022 <span class="comment">  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND</span>
<a name="l00023"></a>00023 <span class="comment">  CONTRIBUTORS &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES,</span>
<a name="l00024"></a>00024 <span class="comment">  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF</span>
<a name="l00025"></a>00025 <span class="comment">  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span>
<a name="l00026"></a>00026 <span class="comment">  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR</span>
<a name="l00027"></a>00027 <span class="comment">  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</span>
<a name="l00028"></a>00028 <span class="comment">  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT</span>
<a name="l00029"></a>00029 <span class="comment">  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span>
<a name="l00030"></a>00030 <span class="comment">  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span>
<a name="l00031"></a>00031 <span class="comment">  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,</span>
<a name="l00032"></a>00032 <span class="comment">  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span>
<a name="l00033"></a>00033 <span class="comment">  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF</span>
<a name="l00034"></a>00034 <span class="comment">  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span>
<a name="l00035"></a>00035 <span class="comment"></span>
<a name="l00036"></a>00036 <span class="comment"></span>
<a name="l00037"></a>00037 <span class="comment">The U8glib code (http://code.google.com/p/u8glib/) is licensed under the terms of</span>
<a name="l00038"></a>00038 <span class="comment">the new-bsd license (two-clause bsd license).</span>
<a name="l00039"></a>00039 <span class="comment">See also: http://www.opensource.org/licenses/bsd-license.php</span>
<a name="l00040"></a>00040 <span class="comment"></span>
<a name="l00041"></a>00041 <span class="comment">The repository and optionally the releases contain icons, which are</span>
<a name="l00042"></a>00042 <span class="comment">derived from the WPZOOM Developer Icon Set:</span>
<a name="l00043"></a>00043 <span class="comment">http://www.wpzoom.com/wpzoom/new-freebie-wpzoom-developer-icon-set-154-free-icons/</span>
<a name="l00044"></a>00044 <span class="comment">WPZOOM Developer Icon Set by WPZOOM is licensed under a Creative Commons</span>
<a name="l00045"></a>00045 <span class="comment">Attribution-ShareAlike 3.0 Unported License.</span>
<a name="l00046"></a>00046 <span class="comment"></span>
<a name="l00047"></a>00047 <span class="comment">Fonts are licensed under different conditions.</span>
<a name="l00048"></a>00048 <span class="comment">See http://code.google.com/p/u8glib/wiki/fontgroup for</span>
<a name="l00049"></a>00049 <span class="comment">detailed information on the licensing conditions for each font.</span>
<a name="l00050"></a>00050 <span class="comment"></span>
<a name="l00051"></a>00051 <span class="comment">============ X11 Fonts COUR, HELV, NCEN, TIM, SYMB ============</span>
<a name="l00052"></a>00052 <span class="comment"></span>
<a name="l00053"></a>00053 <span class="comment">For fonts derived from the following files, the license below applies.</span>
<a name="l00054"></a>00054 <span class="comment">COURB08.BDF COURB10.BDF COURB12.BDF COURB14.BDF COURB18.BDF</span>
<a name="l00055"></a>00055 <span class="comment">COURB24.BDF COURR08.BDF COURR10.BDF COURR12.BDF COURR14.BDF</span>
<a name="l00056"></a>00056 <span class="comment">COURR18.BDF COURR24.BDF HELVB08.BDF HELVB10.BDF HELVB12.BDF HELVB14.BDF</span>
<a name="l00057"></a>00057 <span class="comment">HELVB18.BDF HELVB24.BDF HELVR08.BDF HELVR10.BDF HELVR12.BDF HELVR14.BDF</span>
<a name="l00058"></a>00058 <span class="comment">HELVR18.BDF HELVR24.BDF NCENB08.BDF NCENB10.BDF NCENB12.BDF</span>
<a name="l00059"></a>00059 <span class="comment">NCENB14.BDF NCENB18.BDF NCENB24.BDF NCENR08.BDF NCENR10.BDF</span>
<a name="l00060"></a>00060 <span class="comment">NCENR12.BDF NCENR14.BDF NCENR18.BDF NCENR24.BDF SYMB08.BDF SYMB10.BDF</span>
<a name="l00061"></a>00061 <span class="comment">SYMB12.BDF SYMB14.BDF SYMB18.BDF SYMB24.BDF TIMB08.BDF TIMB10.BDF</span>
<a name="l00062"></a>00062 <span class="comment">TIMB12.BDF TIMB14.BDF TIMB18.BDF TIMB24.BDF TIMR08.BDF TIMR10.BDF</span>
<a name="l00063"></a>00063 <span class="comment">TIMR12.BDF TIMR14.BDF TIMR18.BDF TIMR24.BDF</span>
<a name="l00064"></a>00064 <span class="comment"></span>
<a name="l00065"></a>00065 <span class="comment">Copyright 1984-1989, 1994 Adobe Systems Incorporated.</span>
<a name="l00066"></a>00066 <span class="comment">Copyright 1988, 1994 Digital Equipment Corporation.</span>
<a name="l00067"></a>00067 <span class="comment"></span>
<a name="l00068"></a>00068 <span class="comment">Adobe is a trademark of Adobe Systems Incorporated which may be</span>
<a name="l00069"></a>00069 <span class="comment">registered in certain jurisdictions.</span>
<a name="l00070"></a>00070 <span class="comment">Permission to use these trademarks is hereby granted only in</span>
<a name="l00071"></a>00071 <span class="comment">association with the images described in this file.</span>
<a name="l00072"></a>00072 <span class="comment"></span>
<a name="l00073"></a>00073 <span class="comment">Permission to use, copy, modify, distribute and sell this software</span>
<a name="l00074"></a>00074 <span class="comment">and its documentation for any purpose and without fee is hereby</span>
<a name="l00075"></a>00075 <span class="comment">granted, provided that the above copyright notices appear in all</span>
<a name="l00076"></a>00076 <span class="comment">copies and that both those copyright notices and this permission</span>
<a name="l00077"></a>00077 <span class="comment">notice appear in supporting documentation, and that the names of</span>
<a name="l00078"></a>00078 <span class="comment">Adobe Systems and Digital Equipment Corporation not be used in</span>
<a name="l00079"></a>00079 <span class="comment">advertising or publicity pertaining to distribution of the software</span>
<a name="l00080"></a>00080 <span class="comment">without specific, written prior permission.  Adobe Systems and</span>
<a name="l00081"></a>00081 <span class="comment">Digital Equipment Corporation make no representations about the</span>
<a name="l00082"></a>00082 <span class="comment">suitability of this software for any purpose.  It is provided &quot;as</span>
<a name="l00083"></a>00083 <span class="comment">is&quot; without express or implied warranty.</span>
<a name="l00084"></a>00084 <span class="comment"></span>
<a name="l00085"></a>00085 <span class="comment"></span>
<a name="l00086"></a>00086 <span class="comment">============ BSD License for U8glib Code ============</span>
<a name="l00087"></a>00087 <span class="comment"></span>
<a name="l00088"></a>00088 <span class="comment">Universal 8bit Graphics Library (http://code.google.com/p/u8glib/)</span>
<a name="l00089"></a>00089 <span class="comment"></span>
<a name="l00090"></a>00090 <span class="comment">Copyright (c) 2011, olikraus@gmail.com</span>
<a name="l00091"></a>00091 <span class="comment">All rights reserved.</span>
<a name="l00092"></a>00092 <span class="comment"></span>
<a name="l00093"></a>00093 <span class="comment">Redistribution and use in source and binary forms, with or without modification,</span>
<a name="l00094"></a>00094 <span class="comment">are permitted provided that the following conditions are met:</span>
<a name="l00095"></a>00095 <span class="comment"></span>
<a name="l00096"></a>00096 <span class="comment">* Redistributions of source code must retain the above copyright notice, this list</span>
<a name="l00097"></a>00097 <span class="comment">  of conditions and the following disclaimer.</span>
<a name="l00098"></a>00098 <span class="comment"></span>
<a name="l00099"></a>00099 <span class="comment">* Redistributions in binary form must reproduce the above copyright notice, this</span>
<a name="l00100"></a>00100 <span class="comment">  list of conditions and the following disclaimer in the documentation and/or other</span>
<a name="l00101"></a>00101 <span class="comment">  materials provided with the distribution.</span>
<a name="l00102"></a>00102 <span class="comment"></span>
<a name="l00103"></a>00103 <span class="comment">THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND</span>
<a name="l00104"></a>00104 <span class="comment">CONTRIBUTORS &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES,</span>
<a name="l00105"></a>00105 <span class="comment">INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF</span>
<a name="l00106"></a>00106 <span class="comment">MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span>
<a name="l00107"></a>00107 <span class="comment">DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR</span>
<a name="l00108"></a>00108 <span class="comment">CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</span>
<a name="l00109"></a>00109 <span class="comment">SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT</span>
<a name="l00110"></a>00110 <span class="comment">NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span>
<a name="l00111"></a>00111 <span class="comment">LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span>
<a name="l00112"></a>00112 <span class="comment">CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,</span>
<a name="l00113"></a>00113 <span class="comment">STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span>
<a name="l00114"></a>00114 <span class="comment">ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF</span>
<a name="l00115"></a>00115 <span class="comment">ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span>
<a name="l00116"></a>00116 <span class="comment"></span>
<a name="l00117"></a>00117 <span class="comment">*/</span>
<a name="l00118"></a>00118 
<a name="l00119"></a>00119 <span class="comment">// ============= u8g.h ====================</span>
<a name="l00120"></a>00120 
<a name="l00121"></a>00121 <span class="comment">/*</span>
<a name="l00122"></a>00122 <span class="comment"></span>
<a name="l00123"></a>00123 <span class="comment">  u8g.h</span>
<a name="l00124"></a>00124 <span class="comment"></span>
<a name="l00125"></a>00125 <span class="comment">  Universal 8bit Graphics Library</span>
<a name="l00126"></a>00126 <span class="comment"></span>
<a name="l00127"></a>00127 <span class="comment">  Copyright (c) 2011, olikraus@gmail.com</span>
<a name="l00128"></a>00128 <span class="comment">  All rights reserved.</span>
<a name="l00129"></a>00129 <span class="comment"></span>
<a name="l00130"></a>00130 <span class="comment">  Redistribution and use in source and binary forms, with or without modification,</span>
<a name="l00131"></a>00131 <span class="comment">  are permitted provided that the following conditions are met:</span>
<a name="l00132"></a>00132 <span class="comment"></span>
<a name="l00133"></a>00133 <span class="comment">  * Redistributions of source code must retain the above copyright notice, this list</span>
<a name="l00134"></a>00134 <span class="comment">    of conditions and the following disclaimer.</span>
<a name="l00135"></a>00135 <span class="comment"></span>
<a name="l00136"></a>00136 <span class="comment">  * Redistributions in binary form must reproduce the above copyright notice, this</span>
<a name="l00137"></a>00137 <span class="comment">    list of conditions and the following disclaimer in the documentation and/or other</span>
<a name="l00138"></a>00138 <span class="comment">    materials provided with the distribution.</span>
<a name="l00139"></a>00139 <span class="comment"></span>
<a name="l00140"></a>00140 <span class="comment">  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND</span>
<a name="l00141"></a>00141 <span class="comment">  CONTRIBUTORS &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES,</span>
<a name="l00142"></a>00142 <span class="comment">  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF</span>
<a name="l00143"></a>00143 <span class="comment">  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span>
<a name="l00144"></a>00144 <span class="comment">  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR</span>
<a name="l00145"></a>00145 <span class="comment">  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</span>
<a name="l00146"></a>00146 <span class="comment">  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT</span>
<a name="l00147"></a>00147 <span class="comment">  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span>
<a name="l00148"></a>00148 <span class="comment">  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span>
<a name="l00149"></a>00149 <span class="comment">  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,</span>
<a name="l00150"></a>00150 <span class="comment">  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span>
<a name="l00151"></a>00151 <span class="comment">  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF</span>
<a name="l00152"></a>00152 <span class="comment">  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span>
<a name="l00153"></a>00153 <span class="comment"></span>
<a name="l00154"></a>00154 <span class="comment">*/</span>
<a name="l00155"></a>00155 
<a name="l00156"></a>00156 <span class="preprocessor">#ifndef _U8G_H</span>
<a name="l00157"></a>00157 <span class="preprocessor"></span><span class="preprocessor">#define _U8G_H</span>
<a name="l00158"></a>00158 <span class="preprocessor"></span>
<a name="l00159"></a>00159 <span class="comment">/* uncomment the following line to support displays larger than 240x240 */</span>
<a name="l00160"></a>00160 <span class="comment">//#define U8G_16BIT 1</span>
<a name="l00161"></a>00161 
<a name="l00162"></a>00162 <span class="comment">/* comment the following line to generate more compact but interrupt unsafe code */</span>
<a name="l00163"></a><a class="code" href="u8glib__ex_8h.html#ae4d9e2e94e22269493f128b3329b5f80">00163</a> <span class="preprocessor">#define U8G_INTERRUPT_SAFE 1</span>
<a name="l00164"></a>00164 <span class="preprocessor"></span>
<a name="l00165"></a>00165 
<a name="l00166"></a>00166 <span class="preprocessor">#include &lt;stddef.h&gt;</span>
<a name="l00167"></a>00167 
<a name="l00168"></a>00168 <span class="preprocessor">#ifdef __18CXX</span>
<a name="l00169"></a>00169 <span class="preprocessor"></span><span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> uint8_t;
<a name="l00170"></a>00170 <span class="keyword">typedef</span> <span class="keywordtype">signed</span> <span class="keywordtype">char</span> int8_t;
<a name="l00171"></a>00171 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> uint16_t;
<a name="l00172"></a>00172 <span class="keyword">typedef</span> <span class="keywordtype">signed</span> <span class="keywordtype">short</span> int16_t;
<a name="l00173"></a>00173 <span class="preprocessor">#else</span>
<a name="l00174"></a>00174 <span class="preprocessor"></span><span class="preprocessor">#include &lt;stdint.h&gt;</span>
<a name="l00175"></a>00175 <span class="preprocessor">#endif</span>
<a name="l00176"></a>00176 <span class="preprocessor"></span>
<a name="l00177"></a>00177 <span class="preprocessor">#if defined(__AVR__)</span>
<a name="l00178"></a>00178 <span class="preprocessor"></span><span class="preprocessor">#include &lt;avr/pgmspace.h&gt;</span>
<a name="l00179"></a>00179 <span class="preprocessor">#endif</span>
<a name="l00180"></a>00180 <span class="preprocessor"></span>
<a name="l00181"></a>00181 <span class="comment">/*</span>
<a name="l00182"></a>00182 <span class="comment">  use the com interface directly on any systems which are not AVR or ARDUINO</span>
<a name="l00183"></a>00183 <span class="comment">*/</span>
<a name="l00184"></a>00184 <span class="preprocessor">#if defined(__AVR__) || defined(ARDUINO)</span>
<a name="l00185"></a>00185 <span class="preprocessor"></span><span class="preprocessor">#define U8G_WITH_PINLIST</span>
<a name="l00186"></a>00186 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00187"></a>00187 <span class="preprocessor"></span>
<a name="l00188"></a>00188 
<a name="l00189"></a>00189 <span class="preprocessor">#ifdef __cplusplus</span>
<a name="l00190"></a>00190 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {
<a name="l00191"></a>00191 <span class="preprocessor">#endif</span>
<a name="l00192"></a>00192 <span class="preprocessor"></span>
<a name="l00193"></a>00193 
<a name="l00194"></a>00194 <span class="comment">/*===============================================================*/</span>
<a name="l00195"></a>00195 <span class="preprocessor">#ifdef __GNUC__</span>
<a name="l00196"></a>00196 <span class="preprocessor"></span><span class="preprocessor">#  define U8G_NOINLINE __attribute__((noinline))</span>
<a name="l00197"></a>00197 <span class="preprocessor"></span><span class="preprocessor">#  define U8G_PURE  __attribute__ ((pure))</span>
<a name="l00198"></a>00198 <span class="preprocessor"></span><span class="preprocessor">#  define U8G_NOCOMMON __attribute__ ((nocommon))</span>
<a name="l00199"></a>00199 <span class="preprocessor"></span><span class="preprocessor">#  define U8G_SECTION(name) __attribute__ ((section (name)))</span>
<a name="l00200"></a>00200 <span class="preprocessor"></span><span class="preprocessor">#  if defined(__MSPGCC__)</span>
<a name="l00201"></a>00201 <span class="preprocessor"></span><span class="comment">/* mspgcc does not have .progmem sections. Use -fdata-sections. */</span>
<a name="l00202"></a>00202 <span class="preprocessor">#    define U8G_FONT_SECTION(name)</span>
<a name="l00203"></a>00203 <span class="preprocessor"></span><span class="preprocessor">#  endif</span>
<a name="l00204"></a>00204 <span class="preprocessor"></span><span class="preprocessor">#  if defined(__AVR__)</span>
<a name="l00205"></a>00205 <span class="preprocessor"></span><span class="preprocessor">#    define U8G_FONT_SECTION(name) U8G_SECTION(&quot;.progmem.&quot; name)</span>
<a name="l00206"></a>00206 <span class="preprocessor"></span><span class="preprocessor">#  endif</span>
<a name="l00207"></a>00207 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00208"></a><a class="code" href="u8glib__ex_8h.html#a4bae67fd4823619e3aa810feaf68e93b">00208</a> <span class="preprocessor"></span><span class="preprocessor">#  define U8G_NOINLINE</span>
<a name="l00209"></a><a class="code" href="u8glib__ex_8h.html#a7e9c25bcb1f7afad125ad9022c04b259">00209</a> <span class="preprocessor"></span><span class="preprocessor">#  define U8G_PURE</span>
<a name="l00210"></a><a class="code" href="u8glib__ex_8h.html#a2867d72e981a9705f217f940b6dc1add">00210</a> <span class="preprocessor"></span><span class="preprocessor">#  define U8G_NOCOMMON</span>
<a name="l00211"></a><a class="code" href="u8glib__ex_8h.html#a297ba7b2faa658c131da552713b64be6">00211</a> <span class="preprocessor"></span><span class="preprocessor">#  define U8G_SECTION(name)</span>
<a name="l00212"></a>00212 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00213"></a>00213 <span class="preprocessor"></span>
<a name="l00214"></a>00214 <span class="preprocessor">#ifndef U8G_FONT_SECTION</span>
<a name="l00215"></a><a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">00215</a> <span class="preprocessor"></span><span class="preprocessor">#  define U8G_FONT_SECTION(name)</span>
<a name="l00216"></a>00216 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00217"></a>00217 <span class="preprocessor"></span>
<a name="l00218"></a>00218 
<a name="l00219"></a>00219 <span class="comment">/*===============================================================*/</span>
<a name="l00220"></a>00220 <span class="comment">/* flash memory access */</span>
<a name="l00221"></a>00221 
<a name="l00222"></a>00222 <span class="preprocessor">#if defined(__AVR__)</span>
<a name="l00223"></a>00223 <span class="preprocessor"></span><span class="comment">/* U8G_PROGMEM is used by the XBM example */</span>
<a name="l00224"></a>00224 <span class="preprocessor">#define U8G_PROGMEM U8G_SECTION(&quot;.progmem.data&quot;)</span>
<a name="l00225"></a>00225 <span class="preprocessor"></span><span class="keyword">typedef</span> uint8_t <a class="code" href="u8glib__ex_8h.html#a75acaba9e781937468d0911423bc0c35">PROGMEM</a> <a class="code" href="u8glib__ex_8h.html#a36001154a37bffa374df824f6c4fd82d">u8g_pgm_uint8_t</a>;
<a name="l00226"></a>00226 <span class="keyword">typedef</span> uint8_t <a class="code" href="u8glib__ex_8h.html#a37a51d24065e3a450719025da694a86d">u8g_fntpgm_uint8_t</a>;
<a name="l00227"></a>00227 <span class="preprocessor">#define u8g_pgm_read(adr) pgm_read_byte_near(adr)</span>
<a name="l00228"></a>00228 <span class="preprocessor"></span><span class="preprocessor">#define U8G_PSTR(s) ((u8g_pgm_uint8_t *)PSTR(s))</span>
<a name="l00229"></a>00229 <span class="preprocessor"></span>
<a name="l00230"></a>00230 <span class="preprocessor">#else</span>
<a name="l00231"></a>00231 <span class="preprocessor"></span>
<a name="l00232"></a><a class="code" href="u8glib__ex_8h.html#a48659d4dacfbe530906fb1b63204752e">00232</a> <span class="preprocessor">#define U8G_PROGMEM</span>
<a name="l00233"></a><a class="code" href="u8glib__ex_8h.html#a75acaba9e781937468d0911423bc0c35">00233</a> <span class="preprocessor"></span><span class="preprocessor">#define PROGMEM</span>
<a name="l00234"></a><a class="code" href="u8glib__ex_8h.html#a36001154a37bffa374df824f6c4fd82d">00234</a> <span class="preprocessor"></span><span class="keyword">typedef</span> uint8_t <a class="code" href="u8glib__ex_8h.html#a36001154a37bffa374df824f6c4fd82d">u8g_pgm_uint8_t</a>;
<a name="l00235"></a><a class="code" href="u8glib__ex_8h.html#a37a51d24065e3a450719025da694a86d">00235</a> <span class="keyword">typedef</span> uint8_t <a class="code" href="u8glib__ex_8h.html#a37a51d24065e3a450719025da694a86d">u8g_fntpgm_uint8_t</a>;
<a name="l00236"></a><a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">00236</a> <span class="preprocessor">#define u8g_pgm_read(adr) (*(const u8g_pgm_uint8_t *)(adr))</span>
<a name="l00237"></a><a class="code" href="u8glib__ex_8h.html#a9a11a3b7f063af32a7024da318ec23bd">00237</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_PSTR(s) ((u8g_pgm_uint8_t *)(s))</span>
<a name="l00238"></a>00238 <span class="preprocessor"></span>
<a name="l00239"></a>00239 <span class="preprocessor">#endif</span>
<a name="l00240"></a>00240 <span class="preprocessor"></span>
<a name="l00241"></a>00241 <span class="comment">/*===============================================================*/</span>
<a name="l00242"></a>00242 <span class="comment">/* interrupt safe code */</span>
<a name="l00243"></a>00243 <span class="preprocessor">#if defined(U8G_INTERRUPT_SAFE)</span>
<a name="l00244"></a>00244 <span class="preprocessor"></span><span class="preprocessor">#  if defined(__AVR__)</span>
<a name="l00245"></a>00245 <span class="preprocessor"></span><span class="keyword">extern</span> uint8_t global_SREG_backup;      <span class="comment">/* u8g_state.c */</span>
<a name="l00246"></a>00246 <span class="preprocessor">#    define U8G_ATOMIC_START()          do { global_SREG_backup = SREG; cli(); } while(0)</span>
<a name="l00247"></a>00247 <span class="preprocessor"></span><span class="preprocessor">#    define U8G_ATOMIC_END()                    SREG = global_SREG_backup</span>
<a name="l00248"></a>00248 <span class="preprocessor"></span><span class="preprocessor">#    define U8G_ATOMIC_OR(ptr, val)     do { uint8_t tmpSREG = SREG; cli(); (*(ptr) |= (val)); SREG = tmpSREG; } while(0)</span>
<a name="l00249"></a>00249 <span class="preprocessor"></span><span class="preprocessor">#    define U8G_ATOMIC_AND(ptr, val)    do { uint8_t tmpSREG = SREG; cli(); (*(ptr) &amp;= (val)); SREG = tmpSREG; } while(0)</span>
<a name="l00250"></a>00250 <span class="preprocessor"></span><span class="preprocessor">#  else</span>
<a name="l00251"></a><a class="code" href="u8glib__ex_8h.html#a0d3e0a91345e22225bb0508d60d6fce9">00251</a> <span class="preprocessor"></span><span class="preprocessor">#    define U8G_ATOMIC_OR(ptr, val) (*(ptr) |= (val))</span>
<a name="l00252"></a><a class="code" href="u8glib__ex_8h.html#a4269e8d6b54770eb53a528d4247b9ee7">00252</a> <span class="preprocessor"></span><span class="preprocessor">#    define U8G_ATOMIC_AND(ptr, val) (*(ptr) &amp;= (val))</span>
<a name="l00253"></a><a class="code" href="u8glib__ex_8h.html#a886553fd8da10af11feaaafeb50ddc02">00253</a> <span class="preprocessor"></span><span class="preprocessor">#    define U8G_ATOMIC_START()</span>
<a name="l00254"></a><a class="code" href="u8glib__ex_8h.html#aebeff7c847c90b70a416529e140317e5">00254</a> <span class="preprocessor"></span><span class="preprocessor">#    define U8G_ATOMIC_END()</span>
<a name="l00255"></a>00255 <span class="preprocessor"></span><span class="preprocessor">#  endif </span><span class="comment">/* __AVR__ */</span>
<a name="l00256"></a>00256 <span class="preprocessor">#else</span>
<a name="l00257"></a>00257 <span class="preprocessor"></span><span class="preprocessor">#  define U8G_ATOMIC_OR(ptr, val) (*(ptr) |= (val))</span>
<a name="l00258"></a>00258 <span class="preprocessor"></span><span class="preprocessor">#  define U8G_ATOMIC_AND(ptr, val) (*(ptr) &amp;= (val))</span>
<a name="l00259"></a>00259 <span class="preprocessor"></span><span class="preprocessor">#  define U8G_ATOMIC_START()</span>
<a name="l00260"></a>00260 <span class="preprocessor"></span><span class="preprocessor">#  define U8G_ATOMIC_END()</span>
<a name="l00261"></a>00261 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* U8G_INTERRUPT_SAFE */</span>
<a name="l00262"></a>00262 
<a name="l00263"></a>00263 
<a name="l00264"></a>00264 <span class="comment">/*===============================================================*/</span>
<a name="l00265"></a>00265 <span class="comment">/* forward */</span>
<a name="l00266"></a><a class="code" href="u8glib__ex_8h.html#a445a4b1dc07234e38e90f795bd9bec9f">00266</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__u8g__t.html">_u8g_t</a> <a class="code" href="struct__u8g__t.html">u8g_t</a>;
<a name="l00267"></a><a class="code" href="u8glib__ex_8h.html#a3d609ed155266ce1e9b832f004e7a924">00267</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__u8g__dev__t.html">_u8g_dev_t</a> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a>;
<a name="l00268"></a>00268 
<a name="l00269"></a><a class="code" href="u8glib__ex_8h.html#ac143f686217d9468d4c483b5757927ba">00269</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__u8g__dev__arg__pixel__t.html">_u8g_dev_arg_pixel_t</a> <a class="code" href="struct__u8g__dev__arg__pixel__t.html">u8g_dev_arg_pixel_t</a>;
<a name="l00270"></a><a class="code" href="u8glib__ex_8h.html#a682b5a64b07d5cae08f393c5c457523a">00270</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__u8g__dev__arg__bbx__t.html">_u8g_dev_arg_bbx_t</a> <a class="code" href="struct__u8g__dev__arg__bbx__t.html">u8g_dev_arg_bbx_t</a>;
<a name="l00271"></a><a class="code" href="u8glib__ex_8h.html#a7db4d0b01b44e53cf25adc033e20ac1c">00271</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__u8g__box__t.html">_u8g_box_t</a> <a class="code" href="struct__u8g__box__t.html">u8g_box_t</a>;
<a name="l00272"></a><a class="code" href="u8glib__ex_8h.html#a97bbb154183f1f69e04e31ed46b2472e">00272</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__u8g__dev__arg__irgb__t.html">_u8g_dev_arg_irgb_t</a> <a class="code" href="struct__u8g__dev__arg__irgb__t.html">u8g_dev_arg_irgb_t</a>;
<a name="l00273"></a>00273 
<a name="l00274"></a>00274 
<a name="l00275"></a>00275 <span class="comment">/*===============================================================*/</span>
<a name="l00276"></a>00276 <span class="comment">/* generic */</span>
<a name="l00277"></a>00277 <span class="preprocessor">#if defined(U8G_16BIT)</span>
<a name="l00278"></a>00278 <span class="preprocessor"></span><span class="keyword">typedef</span> uint16_t <a class="code" href="u8glib__ex_8h.html#ab19091723595feb35a099cbd56b7cbb6">u8g_uint_t</a>;
<a name="l00279"></a>00279 <span class="keyword">typedef</span> int16_t <a class="code" href="u8glib__ex_8h.html#a99932950801c8803a2b0f00d0f5234c6">u8g_int_t</a>;
<a name="l00280"></a>00280 <span class="preprocessor">#else</span>
<a name="l00281"></a><a class="code" href="u8glib__ex_8h.html#ab19091723595feb35a099cbd56b7cbb6">00281</a> <span class="preprocessor"></span><span class="keyword">typedef</span> uint8_t <a class="code" href="u8glib__ex_8h.html#ab19091723595feb35a099cbd56b7cbb6">u8g_uint_t</a>;
<a name="l00282"></a><a class="code" href="u8glib__ex_8h.html#a99932950801c8803a2b0f00d0f5234c6">00282</a> <span class="keyword">typedef</span> int8_t <a class="code" href="u8glib__ex_8h.html#a99932950801c8803a2b0f00d0f5234c6">u8g_int_t</a>;
<a name="l00283"></a>00283 <span class="preprocessor">#endif</span>
<a name="l00284"></a>00284 <span class="preprocessor"></span>
<a name="l00285"></a>00285 <span class="preprocessor">#ifdef OBSOLETE</span>
<a name="l00286"></a>00286 <span class="preprocessor"></span><span class="keyword">struct </span><a class="code" href="struct__u8g__box__t.html">_u8g_box_t</a>
<a name="l00287"></a>00287 {
<a name="l00288"></a>00288   u8g_uint_t <a class="code" href="struct__u8g__box__t.html#a1551f8fbcff0e015b97c9d0a6fc83b7a">x0</a>, <a class="code" href="struct__u8g__box__t.html#a33614956497a398eeea02cf06ae0ee34">y0</a>, <a class="code" href="struct__u8g__box__t.html#ae903dfc85a06d24c856d01ecc888a805">x1</a>, <a class="code" href="struct__u8g__box__t.html#a8977e61ef70ab6db468b58d77b1031e4">y1</a>;
<a name="l00289"></a>00289 };
<a name="l00290"></a>00290 <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__u8g__box__t.html">_u8g_box_t</a> <a class="code" href="struct__u8g__box__t.html">u8g_box_t</a>;
<a name="l00291"></a>00291 <span class="preprocessor">#endif </span><span class="comment">/* OBSOLETE */</span>
<a name="l00292"></a>00292 
<a name="l00293"></a>00293 
<a name="l00294"></a>00294 <span class="comment">/*===============================================================*/</span>
<a name="l00295"></a>00295 <span class="comment">/* device structure */</span>
<a name="l00296"></a>00296 
<a name="l00297"></a>00297 <span class="preprocessor">#ifdef __XC8</span>
<a name="l00298"></a>00298 <span class="preprocessor"></span><span class="comment">/* device prototype */</span>
<a name="l00299"></a>00299 <span class="keyword">typedef</span> uint8_t (*<a class="code" href="u8glib__ex_8h.html#a32ddff84f7a264abbafaf67c5a2808c5">u8g_dev_fnptr</a>)(<span class="keywordtype">void</span> *u8g, <span class="keywordtype">void</span> *dev, uint8_t msg, <span class="keywordtype">void</span> *arg);
<a name="l00300"></a>00300 
<a name="l00301"></a>00301 <span class="comment">/* com prototype */</span>
<a name="l00302"></a>00302 <span class="keyword">typedef</span> uint8_t (*<a class="code" href="u8glib__ex_8h.html#ae5fda0c9749774cf2dd40cb40c4e5f14">u8g_com_fnptr</a>)(<span class="keywordtype">void</span> *u8g, uint8_t msg, uint8_t arg_val, <span class="keywordtype">void</span> *arg_ptr);
<a name="l00303"></a>00303 <span class="preprocessor">#else</span>
<a name="l00304"></a>00304 <span class="preprocessor"></span><span class="comment">/* device prototype */</span>
<a name="l00305"></a><a class="code" href="u8glib__ex_8h.html#a32ddff84f7a264abbafaf67c5a2808c5">00305</a> <span class="keyword">typedef</span> uint8_t (*<a class="code" href="u8glib__ex_8h.html#a32ddff84f7a264abbafaf67c5a2808c5">u8g_dev_fnptr</a>)(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t msg, <span class="keywordtype">void</span> *arg);
<a name="l00306"></a>00306 
<a name="l00307"></a>00307 <span class="comment">/* com prototype */</span>
<a name="l00308"></a><a class="code" href="u8glib__ex_8h.html#ae5fda0c9749774cf2dd40cb40c4e5f14">00308</a> <span class="keyword">typedef</span> uint8_t (*<a class="code" href="u8glib__ex_8h.html#ae5fda0c9749774cf2dd40cb40c4e5f14">u8g_com_fnptr</a>)(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t msg, uint8_t arg_val, <span class="keywordtype">void</span> *arg_ptr);
<a name="l00309"></a>00309 <span class="preprocessor">#endif</span>
<a name="l00310"></a>00310 <span class="preprocessor"></span>
<a name="l00311"></a>00311 
<a name="l00312"></a>00312 
<a name="l00313"></a><a class="code" href="struct__u8g__dev__t.html">00313</a> <span class="keyword">struct </span><a class="code" href="struct__u8g__dev__t.html">_u8g_dev_t</a>
<a name="l00314"></a>00314 {
<a name="l00315"></a><a class="code" href="struct__u8g__dev__t.html#a57bdd37495cc8a9772412fa2344d0476">00315</a>   <a class="code" href="u8glib__ex_8h.html#a32ddff84f7a264abbafaf67c5a2808c5">u8g_dev_fnptr</a> <a class="code" href="struct__u8g__dev__t.html#a57bdd37495cc8a9772412fa2344d0476">dev_fn</a>;         <span class="comment">/* device procedure */</span>
<a name="l00316"></a><a class="code" href="struct__u8g__dev__t.html#abba2e941334cbcd55738b77b1be6526e">00316</a>   <span class="keywordtype">void</span> *<a class="code" href="struct__u8g__dev__t.html#abba2e941334cbcd55738b77b1be6526e">dev_mem</a>;                <span class="comment">/* device memory */</span>
<a name="l00317"></a><a class="code" href="struct__u8g__dev__t.html#a1ee078d6dfb228283ae687b6722a9ee1">00317</a>   <a class="code" href="u8glib__ex_8h.html#ae5fda0c9749774cf2dd40cb40c4e5f14">u8g_com_fnptr</a> <a class="code" href="struct__u8g__dev__t.html#a1ee078d6dfb228283ae687b6722a9ee1">com_fn</a>;         <span class="comment">/* communication procedure */</span>
<a name="l00318"></a>00318 };
<a name="l00319"></a>00319 
<a name="l00320"></a>00320 
<a name="l00321"></a>00321 <span class="comment">/*===============================================================*/</span>
<a name="l00322"></a>00322 <span class="comment">/* device list */</span>
<a name="l00323"></a>00323 
<a name="l00324"></a>00324 <span class="comment">/* Size: 128x64 SDL, u8g_dev_sdl.c */</span>
<a name="l00325"></a>00325 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#ae55db4827e01a39b51b94f0aac601d28">u8g_dev_sdl_1bit</a>;
<a name="l00326"></a>00326 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#aa2862b94463e32ac3bbb6dbf940a9a34">u8g_dev_sdl_1bit_h</a>;
<a name="l00327"></a>00327 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a858750e785e53306a680049a54fdb2cf">u8g_dev_sdl_2bit</a>;
<a name="l00328"></a>00328 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#aec18dff7ccd55254e0c2b71261d30c4f">u8g_dev_sdl_2bit_double_mem</a>;
<a name="l00329"></a>00329 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#aafa819504c6242a037357b7292449dd3">u8g_dev_sdl_8bit</a>;
<a name="l00330"></a>00330 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a976c48c09395d6af0402d069012420fe">u8g_dev_sdl_hicolor</a>;
<a name="l00331"></a>00331 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a94a3957f07fe0eaa15fbee9285f6fe35">u8g_dev_sdl_fullcolor</a>;
<a name="l00332"></a>00332 <span class="keywordtype">int</span> <a class="code" href="u8glib__ex_8h.html#aa4162b5827d9abe2ec7e180ed473464a">u8g_sdl_get_key</a>(<span class="keywordtype">void</span>);
<a name="l00333"></a>00333 
<a name="l00334"></a>00334 <span class="comment">/* Size: 70x30 monochrom, stdout */</span>
<a name="l00335"></a>00335 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a39c90e64c2c2673eb8b24a137ed50a33">u8g_dev_stdout</a>;
<a name="l00336"></a>00336 
<a name="l00337"></a>00337 <span class="comment">/* Size: monochrom, writes &quot;u8g.pbm&quot; */</span>
<a name="l00338"></a>00338 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a24e825de3264b21a8fd522247dfc3762">u8g_dev_pbm</a>;
<a name="l00339"></a>00339 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a5fd77669eaa8f51b79b273803964bbe9">u8g_dev_pbm_8h1</a>;
<a name="l00340"></a>00340 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#ab54c6b80a66167815abb6f8f5b3bb317">u8g_dev_pbm_8h2</a>;       <span class="comment">/* grayscale simulation */</span>
<a name="l00341"></a>00341 
<a name="l00342"></a>00342 <span class="comment">/* Size: 128x64 monochrom, no output, used for performance measure */</span>
<a name="l00343"></a>00343 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a51e9c8c7b3f5b0e77479df720704d8f9">u8g_dev_gprof</a>;
<a name="l00344"></a>00344 
<a name="l00345"></a>00345 <span class="comment">/* Display: EA DOGS102, Size: 102x64 monochrom */</span>
<a name="l00346"></a>00346 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a4269762ba250d0962c209ef867f5b978">u8g_dev_uc1701_dogs102_sw_spi</a>;
<a name="l00347"></a>00347 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a1980782c7800ec10b52e250e9df35279">u8g_dev_uc1701_dogs102_hw_spi</a>;
<a name="l00348"></a>00348 
<a name="l00349"></a>00349 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a788c2e7a2f0d4d943eed7f5ab5bf51db">u8g_dev_uc1701_dogs102_2x_sw_spi</a>;
<a name="l00350"></a>00350 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#aeee53d6781562b420b711505921b6a2d">u8g_dev_uc1701_dogs102_2x_hw_spi</a>;
<a name="l00351"></a>00351 
<a name="l00352"></a>00352 <span class="comment">/* Display: Mini12864 (dealextreme), Size: 128x64 monochrom */</span>
<a name="l00353"></a>00353 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a61545a311a109032d614481a088391c2">u8g_dev_uc1701_mini12864_sw_spi</a>;
<a name="l00354"></a>00354 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#ad0a5be7ff91b2223f5080b5949c5706d">u8g_dev_uc1701_mini12864_hw_spi</a>;
<a name="l00355"></a>00355 
<a name="l00356"></a>00356 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a3dedc07690bdbcec51159d46f21e460b">u8g_dev_uc1701_mini12864_2x_sw_spi</a>;
<a name="l00357"></a>00357 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#af5aeb3d81e7f87f3471233fe8f2fb803">u8g_dev_uc1701_mini12864_2x_hw_spi</a>;
<a name="l00358"></a>00358 
<a name="l00359"></a>00359 <span class="comment">/* Display: EA DOGM132, Size: 128x32 monochrom */</span>
<a name="l00360"></a>00360 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#ac8872458cdc30f07542cc56a25c9ca53">u8g_dev_st7565_dogm132_sw_spi</a>;
<a name="l00361"></a>00361 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#af96898f68a4be76b336503cd5f4ae958">u8g_dev_st7565_dogm132_hw_spi</a>;
<a name="l00362"></a>00362 
<a name="l00363"></a>00363 <span class="comment">/* Display: EA DOGM128, Size: 128x64 monochrom */</span>
<a name="l00364"></a>00364 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#aeff68fffc0f993faa70f64fcc8b312da">u8g_dev_st7565_dogm128_sw_spi</a>;
<a name="l00365"></a>00365 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#ad89216691986079ca1843f184bc469f1">u8g_dev_st7565_dogm128_hw_spi</a>;
<a name="l00366"></a>00366 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a7a48798f2b3291b98847c75662f83cce">u8g_dev_st7565_dogm128_parallel</a>;
<a name="l00367"></a>00367 
<a name="l00368"></a>00368 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#aca3e516a8dde1ad8215f37741b6ab555">u8g_dev_st7565_dogm128_2x_sw_spi</a>;
<a name="l00369"></a>00369 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a263a9d4a4b183d7cc0d319d144e86a7e">u8g_dev_st7565_dogm128_2x_hw_spi</a>;
<a name="l00370"></a>00370 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a171716cfde5fb3c7fdeaf9ecc6611822">u8g_dev_st7565_dogm128_2x_parallel</a>;
<a name="l00371"></a>00371 
<a name="l00372"></a>00372 <span class="comment">/* Display: Topway LM6059 128x64 (Adafruit) */</span>
<a name="l00373"></a>00373 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a94f3237ffa659d421502a57f47f7161b">u8g_dev_st7565_lm6059_sw_spi</a>;
<a name="l00374"></a>00374 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a5c59f5991f04c91f15c3b2f3df49f9e8">u8g_dev_st7565_lm6059_hw_spi</a>;
<a name="l00375"></a>00375 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a8b4f7c2c578f2867a0a95ded9909c237">u8g_dev_st7565_lm6059_2x_sw_spi</a>;
<a name="l00376"></a>00376 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a372fd823f2e5e76fa5056bc345ba6fda">u8g_dev_st7565_lm6059_2x_hw_spi</a>;
<a name="l00377"></a>00377 <span class="comment">/* Display: Topway LM6063 128x64 */</span>
<a name="l00378"></a>00378 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a85e8ac4921368cb76aef0c1b7ed69b4b">u8g_dev_st7565_lm6063_sw_spi</a>;
<a name="l00379"></a>00379 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#ad632c94d1dd55fa1206cc0d68b917c65">u8g_dev_st7565_lm6063_hw_spi</a>;
<a name="l00380"></a>00380 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#ac8a57aa679f6a520e98080aac24a5dec">u8g_dev_st7565_lm6063_2x_sw_spi</a>;
<a name="l00381"></a>00381 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a3559ec356e10b3202bebb866acecc4fb">u8g_dev_st7565_lm6063_2x_hw_spi</a>;
<a name="l00382"></a>00382 <span class="comment">/* Display: Newhaven NHD-C12864 */</span>
<a name="l00383"></a>00383 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#af3d88afd0708d5df48971d581b5475e7">u8g_dev_st7565_nhd_c12864_sw_spi</a>;
<a name="l00384"></a>00384 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#af8d9a08abc182b4e27cf48d2815d003d">u8g_dev_st7565_nhd_c12864_hw_spi</a>;
<a name="l00385"></a>00385 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a6220b760e2692410ea76ff5bc2854a89">u8g_dev_st7565_nhd_c12864_2x_sw_spi</a>;
<a name="l00386"></a>00386 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a14856f584fdbcaa8351c4e81b1c86d69">u8g_dev_st7565_nhd_c12864_2x_hw_spi</a>;
<a name="l00387"></a>00387 
<a name="l00388"></a>00388 <span class="comment">/* Display: Newhaven NHD-C12832 */</span>
<a name="l00389"></a>00389 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a52ddbe2cb5cf1c256398f1826f736dca">u8g_dev_st7565_nhd_c12832_sw_spi</a>;
<a name="l00390"></a>00390 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a3eeb9e6b37716948ad714d64c745edf7">u8g_dev_st7565_nhd_c12832_hw_spi</a>;
<a name="l00391"></a>00391 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a6487c2633b55cc1bea3b85e655524416">u8g_dev_st7565_nhd_c12832_parallel</a>;
<a name="l00392"></a>00392 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a1df6e46136d64f63f655353274d6a266">u8g_dev_st7565_nhd_c12832_hw_usart_spi</a>;
<a name="l00393"></a>00393 
<a name="l00394"></a>00394 <span class="comment">/* Display: Displaytech 64128N */</span>
<a name="l00395"></a>00395 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#aafc29db2fd414687549d04cd4259fe78">u8g_dev_st7565_64128n_sw_spi</a>;
<a name="l00396"></a>00396 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a9629a7828208e2b2ecabce426031fe94">u8g_dev_st7565_64128n_hw_spi</a>;
<a name="l00397"></a>00397 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#aa2da07a660a203764ab7e3285a33439d">u8g_dev_st7565_64128n_parallel</a>;
<a name="l00398"></a>00398 
<a name="l00399"></a>00399 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a68c151f154b3b8b0522adf4cd0af0ae0">u8g_dev_st7565_64128n_2x_sw_spi</a>;
<a name="l00400"></a>00400 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a0cb7029d3e99a0bb8d7e37e5c83f62cd">u8g_dev_st7565_64128n_2x_hw_spi</a>;
<a name="l00401"></a>00401 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#af99fe8cb8be012e87bf4e680bb634c44">u8g_dev_st7565_64128n_2x_parallel</a>;
<a name="l00402"></a>00402 
<a name="l00403"></a>00403 <span class="comment">/* Display: LCD-AG-C128032R-DIW W/KK E6 PBF */</span>
<a name="l00404"></a>00404 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a8521ca618e175f847a379728e1318814">u8g_dev_uc1601_c128032_sw_spi</a>;
<a name="l00405"></a>00405 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#aeddb912b37ee6a130a9e58d85ec3c0b0">u8g_dev_uc1601_c128032_hw_spi</a>;
<a name="l00406"></a>00406 
<a name="l00407"></a>00407 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a093d9fb5c72ca67a0616a7fc427893a3">u8g_dev_uc1601_c128032_2x_sw_spi</a>;
<a name="l00408"></a>00408 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a696adfda774db37a1ede8f201d70a589">u8g_dev_uc1601_c128032_2x_hw_spi</a>;
<a name="l00409"></a>00409 
<a name="l00410"></a>00410 <span class="comment">/* dfrobot 128x64 Graphic LCD (SKU:FIT0021) */</span>
<a name="l00411"></a>00411 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a375b36f60ac8ffd8d82745b2c522abdc">u8g_dev_st7920_128x64_sw_spi</a>;
<a name="l00412"></a>00412 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a983640d9205dc773981c85a18cd20d8e">u8g_dev_st7920_128x64_hw_spi</a>;
<a name="l00413"></a>00413 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a28758e7da1d7093489ed31859aceffd0">u8g_dev_st7920_128x64_8bit</a>;
<a name="l00414"></a>00414 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a6a163bdca802676731c1e0023f7745bd">u8g_dev_st7920_128x64_custom</a>;
<a name="l00415"></a>00415 
<a name="l00416"></a>00416 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a0b61f69af54b798d3bdac3ac89489f8f">u8g_dev_st7920_128x64_4x_sw_spi</a>;
<a name="l00417"></a>00417 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a55144ede29b53115554f95c7e683f342">u8g_dev_st7920_128x64_4x_hw_spi</a>;
<a name="l00418"></a>00418 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a1137a5b078a98ea5b566339d326abfeb">u8g_dev_st7920_128x64_4x_8bit</a>;
<a name="l00419"></a>00419 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a6a34dae1f4cee3bf7b700845150dd842">u8g_dev_st7920_128x64_4x_custom</a>;
<a name="l00420"></a>00420 
<a name="l00421"></a>00421 <span class="comment">/* NHD-19232WG */</span>
<a name="l00422"></a>00422 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#adda87e64fc43e85803c68333c11bb428">u8g_dev_st7920_192x32_sw_spi</a>;
<a name="l00423"></a>00423 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#ad7d7d38dbee4cf7464be86ed0822ad99">u8g_dev_st7920_192x32_hw_spi</a>;
<a name="l00424"></a>00424 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#ad7bfa91cab92500cf99577ce70bb31e2">u8g_dev_st7920_192x32_8bit</a>;
<a name="l00425"></a>00425 
<a name="l00426"></a>00426 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a14ee6959b573861eb653a9ef2b5f41f4">u8g_dev_st7920_192x32_4x_sw_spi</a>;
<a name="l00427"></a>00427 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a7aa984e445658ad84b40649a723a7770">u8g_dev_st7920_192x32_4x_hw_spi</a>;
<a name="l00428"></a>00428 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a288c0fb2dcc713517280cfc0e730e2ff">u8g_dev_st7920_192x32_4x_8bit</a>;
<a name="l00429"></a>00429 
<a name="l00430"></a>00430 <span class="comment">/* CrystalFontz CFAG20232 */</span>
<a name="l00431"></a>00431 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a52bee679f9993d722b16592964365e55">u8g_dev_st7920_202x32_sw_spi</a>;
<a name="l00432"></a>00432 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a12cb63629d75b017d0a930c829bf098c">u8g_dev_st7920_202x32_hw_spi</a>;
<a name="l00433"></a>00433 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#aca6145cf7f7f8b35d5db6b624757528a">u8g_dev_st7920_202x32_8bit</a>;
<a name="l00434"></a>00434 
<a name="l00435"></a>00435 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#ae5e1b430dc818418f36d4af2963daf1e">u8g_dev_st7920_202x32_4x_sw_spi</a>;
<a name="l00436"></a>00436 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#ae2c1cea5e7c9209669915b8b3e963be7">u8g_dev_st7920_202x32_4x_hw_spi</a>;
<a name="l00437"></a>00437 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a8762c873b5ee3a061b6d1ed10ed7d514">u8g_dev_st7920_202x32_4x_8bit</a>;
<a name="l00438"></a>00438 
<a name="l00439"></a>00439 <span class="comment">/* LC7981 160x80 display */</span>
<a name="l00440"></a>00440 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a2162739b3db47dbaab39e9a14fe13864">u8g_dev_lc7981_160x80_8bit</a>;
<a name="l00441"></a>00441 <span class="comment">/* LC7981 240x64 display */</span>
<a name="l00442"></a>00442 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#ac0e5a73e676cb13e4323666e73891b84">u8g_dev_lc7981_240x64_8bit</a>;
<a name="l00443"></a>00443 <span class="comment">/* LC7981 240x128 display */</span>
<a name="l00444"></a>00444 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a2ba435e71500706b3ea81519a1f1be98">u8g_dev_lc7981_240x128_8bit</a>;
<a name="l00445"></a>00445 <span class="comment">/* LC7981 320x64 display */</span>
<a name="l00446"></a>00446 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#af379e209189b37af18444ae1658c95e3">u8g_dev_lc7981_320x64_8bit</a>;
<a name="l00447"></a>00447 
<a name="l00448"></a>00448 <span class="comment">/* T6963, all t6963 devices have double page (2x) */</span>
<a name="l00449"></a>00449 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#acfdf1c8a7163b7e84d6fd759290dfd0c">u8g_dev_t6963_240x128_8bit</a>;
<a name="l00450"></a>00450 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a9bdca75a7e264983620227cc252e8539">u8g_dev_t6963_240x64_8bit</a>;
<a name="l00451"></a>00451 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#ad000deefdee3fa4cd36797749ba0903a">u8g_dev_t6963_128x64_8bit</a>;
<a name="l00452"></a>00452 
<a name="l00453"></a>00453 <span class="comment">/* Display: EA DOGXL160, Size: 160x104 monochrom &amp; gray level */</span>
<a name="l00454"></a>00454 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#adeda1debf32d2a8591af17f02cc3267a">u8g_dev_uc1610_dogxl160_bw_sw_spi</a>;
<a name="l00455"></a>00455 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a77b9e68e4c907a7ee5f0343c3b4b8881">u8g_dev_uc1610_dogxl160_bw_hw_spi</a>;
<a name="l00456"></a>00456 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#ad7c9a3855f934ed7fba991e6589cd0e5">u8g_dev_uc1610_dogxl160_gr_sw_spi</a>;
<a name="l00457"></a>00457 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a1e79f683e8d38b1995985a1f86d9adc1">u8g_dev_uc1610_dogxl160_gr_hw_spi</a>;
<a name="l00458"></a>00458 
<a name="l00459"></a>00459 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a48fc99079a7b44a7e9a5cfeaf1bdca4f">u8g_dev_uc1610_dogxl160_2x_bw_sw_spi</a>;
<a name="l00460"></a>00460 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#aaa1447384abbaf39dfe02330ad4533db">u8g_dev_uc1610_dogxl160_2x_bw_hw_spi</a>;
<a name="l00461"></a>00461 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a33d8a21b9dbddcb919f1ed8fbc3472d9">u8g_dev_uc1610_dogxl160_2x_gr_sw_spi</a>;
<a name="l00462"></a>00462 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#ad67152c1dccd2e060d51ce7e7c84936a">u8g_dev_uc1610_dogxl160_2x_gr_hw_spi</a>;
<a name="l00463"></a>00463 
<a name="l00464"></a>00464 <span class="comment">/* Display: Generic KS0108b, Size: 128x64 monochrom */</span>
<a name="l00465"></a>00465 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#aff4856ff2a2db69fbde4c7fd7a7cfc29">u8g_dev_ks0108_128x64</a>;         <span class="comment">/* official Arduino Library interface */</span>
<a name="l00466"></a>00466 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#abebe1d4d22a259dbf8f28e6931985bb0">u8g_dev_ks0108_128x64_fast</a>;    <span class="comment">/* faster, but uses private tables from the Arduino Library */</span>
<a name="l00467"></a>00467 
<a name="l00468"></a>00468 <span class="comment">/* Nokia 84x48 Display with PCD8544 */</span>
<a name="l00469"></a>00469 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#ac027c79134fa8745659b0351184da217">u8g_dev_pcd8544_84x48_sw_spi</a>;
<a name="l00470"></a>00470 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a701b10dbcdda6aac7930f84982ac88ef">u8g_dev_pcd8544_84x48_hw_spi</a>;
<a name="l00471"></a>00471 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a9e265a4ff0a5a55deb121f969b1c8ccd">u8g_dev_tls8204_84x48_sw_spi</a>;
<a name="l00472"></a>00472 
<a name="l00473"></a>00473 <span class="comment">/* Nokia 96x65 Display with PCF8812 */</span>
<a name="l00474"></a>00474 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a016f958fe24a7c0e7a4ece5672c24706">u8g_dev_pcf8812_96x65_sw_spi</a>;
<a name="l00475"></a>00475 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a6e6c742d321b69150c22fc488ff28038">u8g_dev_pcf8812_96x65_hw_spi</a>;
<a name="l00476"></a>00476 
<a name="l00477"></a>00477 <span class="comment">/* NHD-2.7-12864UCY3 OLED Display with SSD1325 Controller */</span>
<a name="l00478"></a>00478 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a5f972b5256ef0764fec2f71e7a89afe6">u8g_dev_ssd1325_nhd27oled_bw_sw_spi</a>;
<a name="l00479"></a>00479 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a4f9500074be11b6667bb77f8d974f5b3">u8g_dev_ssd1325_nhd27oled_bw_hw_spi</a>;
<a name="l00480"></a>00480 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a1055dccbd68449e9485877f5f73de702">u8g_dev_ssd1325_nhd27oled_bw_parallel</a>;
<a name="l00481"></a>00481 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a86775152d36f70247900a21e0b4e8f13">u8g_dev_ssd1325_nhd27oled_gr_sw_spi</a>;
<a name="l00482"></a>00482 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a7835f989134c0ead7e6d6b1d4caaa3bc">u8g_dev_ssd1325_nhd27oled_gr_hw_spi</a>;
<a name="l00483"></a>00483 
<a name="l00484"></a>00484 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a4fa346a84ee7ec98c234ae037e740739">u8g_dev_ssd1325_nhd27oled_2x_bw_sw_spi</a>;
<a name="l00485"></a>00485 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#aba4dd4f6036d53cbfb04f45b4b1282c6">u8g_dev_ssd1325_nhd27oled_2x_bw_hw_spi</a>;
<a name="l00486"></a>00486 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#adb4c2cfe0fd91d36c40bcfd8f54bc4cf">u8g_dev_ssd1325_nhd27oled_2x_bw_parallel</a>;
<a name="l00487"></a>00487 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#af013cb2cd147b19edf69f18a1efdd2a8">u8g_dev_ssd1325_nhd27oled_2x_gr_sw_spi</a>;
<a name="l00488"></a>00488 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a77b9c1c8b45fd3fc88d2fa7f3ef19f5a">u8g_dev_ssd1325_nhd27oled_2x_gr_hw_spi</a>;
<a name="l00489"></a>00489 
<a name="l00490"></a>00490 <span class="comment">/* LY120 OLED with SSD1327 Controller (tested with Seeedstudio module) */</span>
<a name="l00491"></a>00491 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a2d3975e0dcc86bd8ac27fa8133977a07">u8g_dev_ssd1327_96x96_gr_sw_spi</a>;
<a name="l00492"></a>00492 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#ab702eebcab2d54c54effe7b9a9fac7e4">u8g_dev_ssd1327_96x96_gr_hw_spi</a>;
<a name="l00493"></a>00493 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#aa121f3c62fea3861fffc862f88584bd3">u8g_dev_ssd1327_96x96_gr_i2c</a>;
<a name="l00494"></a>00494 
<a name="l00495"></a>00495 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a4a1bb70a92a79454efd3d749304a883a">u8g_dev_ssd1327_96x96_2x_gr_sw_spi</a>;
<a name="l00496"></a>00496 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a79fa14a7c494d97a428c1ce14b19af1b">u8g_dev_ssd1327_96x96_2x_gr_hw_spi</a>;
<a name="l00497"></a>00497 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#ae3493540200ba7c989bfca8066685d21">u8g_dev_ssd1327_96x96_2x_gr_i2c</a>;
<a name="l00498"></a>00498 
<a name="l00499"></a>00499 <span class="comment">/* NHD-3.12-25664 OLED Display with SSD1322 Controller */</span>
<a name="l00500"></a>00500 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a611b8042ca2c0dca0663adb23e3b7919">u8g_dev_ssd1322_nhd31oled_bw_sw_spi</a>;
<a name="l00501"></a>00501 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a69c1e87c1bd5f8884f6a19eab73d7114">u8g_dev_ssd1322_nhd31oled_bw_hw_spi</a>;
<a name="l00502"></a>00502 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a6a5da3d6a05ae93ee858df9309b875cf">u8g_dev_ssd1322_nhd31oled_bw_parallel</a>;
<a name="l00503"></a>00503 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a1fefa72ae80319c9c1446c14d8e8f7b0">u8g_dev_ssd1322_nhd31oled_2x_bw_sw_spi</a>;
<a name="l00504"></a>00504 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#ae04a7e7420ee86be22e31d9fb863760a">u8g_dev_ssd1322_nhd31oled_2x_bw_hw_spi</a>;
<a name="l00505"></a>00505 
<a name="l00506"></a>00506 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#ab91847ae8b1992e82579d583f17d7a28">u8g_dev_ssd1322_nhd31oled_gr_sw_spi</a>;
<a name="l00507"></a>00507 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a5bcac0eaebbbd289ed222ed71130bab4">u8g_dev_ssd1322_nhd31oled_gr_hw_spi</a>;
<a name="l00508"></a>00508 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a1ab809372f2c0c5d265d87839afc1b51">u8g_dev_ssd1322_nhd31oled_gr_parallel</a>;
<a name="l00509"></a>00509 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#ada8ef461dabb3750b9eeaa371d871fb1">u8g_dev_ssd1322_nhd31oled_2x_gr_sw_spi</a>;
<a name="l00510"></a>00510 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#abe252e6b3fbac75ba81ff0937f3d99ee">u8g_dev_ssd1322_nhd31oled_2x_gr_hw_spi</a>;
<a name="l00511"></a>00511 
<a name="l00512"></a>00512 <span class="comment">/* OLED 128x64 Display with SSD1306 Controller */</span>
<a name="l00513"></a>00513 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a41175d0be6ae5723f2435f45b15b9951">u8g_dev_ssd1306_128x64_sw_spi</a>;
<a name="l00514"></a>00514 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a36401648980b461142409b4b4c5160d9">u8g_dev_ssd1306_128x64_hw_spi</a>;
<a name="l00515"></a>00515 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a8567075cd69d8a8fafd20f4f50a68bf7">u8g_dev_ssd1306_128x64_i2c</a>;
<a name="l00516"></a>00516 
<a name="l00517"></a>00517 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#ac3dabf6fb3bab0c85f3deba24ae3b4ec">u8g_dev_ssd1306_128x64_2x_sw_spi</a>;
<a name="l00518"></a>00518 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a107fd7d8311c1b6e3fbacd7d5702102f">u8g_dev_ssd1306_128x64_2x_hw_spi</a>;
<a name="l00519"></a>00519 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a22612541760472c3b563cd8c613cd53a">u8g_dev_ssd1306_128x64_2x_i2c</a>;
<a name="l00520"></a>00520 
<a name="l00521"></a>00521 <span class="comment">/* OLED 128x64 Display with SSD1309 Controller */</span>
<a name="l00522"></a>00522 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#ad0bfe389ab3faa5c9447b669c1f63b3c">u8g_dev_ssd1309_128x64_sw_spi</a>;
<a name="l00523"></a>00523 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a27a8b882aa3f9677c2d2a1fbc7ef9463">u8g_dev_ssd1309_128x64_hw_spi</a>;
<a name="l00524"></a>00524 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a2474fb200441b3e41fcab508aa20375a">u8g_dev_ssd1309_128x64_i2c</a>;
<a name="l00525"></a>00525 
<a name="l00526"></a>00526 <span class="comment">/* OLED 128x32 Display with SSD1306 Controller */</span>
<a name="l00527"></a>00527 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a59795718daf3c5ea2cb299f0796a0bf4">u8g_dev_ssd1306_128x32_sw_spi</a>;
<a name="l00528"></a>00528 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#aabab36b3768f4820457f1bf709da8254">u8g_dev_ssd1306_128x32_hw_spi</a>;
<a name="l00529"></a>00529 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a3ca6592d52f3010632f8f30ce8222967">u8g_dev_ssd1306_128x32_i2c</a>;
<a name="l00530"></a>00530 
<a name="l00531"></a>00531 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a2187c9c3de2b813e22197aaa4a2aaa0e">u8g_dev_ssd1306_128x32_2x_sw_spi</a>;
<a name="l00532"></a>00532 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a3d71360fcba481115a1d73ebb7d37927">u8g_dev_ssd1306_128x32_2x_hw_spi</a>;
<a name="l00533"></a>00533 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a38401f034f797ff4e1db77f5d7aaee5d">u8g_dev_ssd1306_128x32_2x_i2c</a>;
<a name="l00534"></a>00534 
<a name="l00535"></a>00535 <span class="comment">/* experimental 65K TFT with st7687 controller */</span>
<a name="l00536"></a>00536 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a2c9310b740e663ac6663e68f9f85e1b0">u8g_dev_st7687_c144mvgd_sw_spi</a>;
<a name="l00537"></a>00537 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a054b5bbd3db3ec962820fac143909fe0">u8g_dev_st7687_c144mvgd_8bit</a>;
<a name="l00538"></a>00538 
<a name="l00539"></a>00539 <span class="comment">/* SBN1661/SED1520 display with 122x32 */</span>
<a name="l00540"></a>00540 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#ab1da6d3d34e045a987ea25c1ecc66a92">u8g_dev_sbn1661_122x32</a>;
<a name="l00541"></a>00541 
<a name="l00542"></a>00542 <span class="comment">/* flip disc matrix */</span>
<a name="l00543"></a>00543 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#ac00c3851828408a9f0b48258c5c6bb6e">u8g_dev_flipdisc_2x7</a>;
<a name="l00544"></a>00544 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a9a3f5eef3c53181760cfb8171e995028">u8g_SetFlipDiscCallback</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <span class="keywordtype">void</span> (*cb)(uint8_t <span class="keywordtype">id</span>, uint8_t page, uint8_t width, uint8_t *row1, uint8_t *row2));
<a name="l00545"></a>00545 
<a name="l00546"></a>00546 <span class="comment">/* ILI9325D based TFT */</span>
<a name="l00547"></a>00547 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a50c4937d7db26b512bda97b6149fc24f">u8g_dev_ili9325d_320x240_8bit</a>;
<a name="l00548"></a>00548 
<a name="l00549"></a>00549 
<a name="l00550"></a>00550 <span class="comment">/* SSD1351 OLED (breakout board from http://www.kickstarter.com/projects/ilsoftltd/colour-oled-breakout-board) */</span>
<a name="l00551"></a>00551 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a6da281130f4c99b48e38eb56f562b19a">u8g_dev_ssd1351_128x128_332_sw_spi</a>;
<a name="l00552"></a>00552 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a3378e7ecd9f0f9e1a95b3f862454d0ae">u8g_dev_ssd1351_128x128_332_hw_spi</a>;
<a name="l00553"></a>00553 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a2c88fd82968a2bb0fbfc74aaa76969a4">u8g_dev_ssd1351_128x128_4x_332_sw_spi</a>;
<a name="l00554"></a>00554 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a722ae0eb44a7c2254884d0c61ef7f7e0">u8g_dev_ssd1351_128x128_4x_332_hw_spi</a>;
<a name="l00555"></a>00555 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a43047e753e4d32b66323ca5726d38aad">u8g_dev_ssd1351_128x128_idx_sw_spi</a>;
<a name="l00556"></a>00556 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#ac6d0d2d5eac70c7bf660cf331e601326">u8g_dev_ssd1351_128x128_idx_hw_spi</a>;
<a name="l00557"></a>00557 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a984d34daee3ea218f1575fac9a7012f5">u8g_dev_ssd1351_128x128_hicolor_sw_spi</a>;
<a name="l00558"></a>00558 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a075d3ed64481c03770a00b66cd8b4afa">u8g_dev_ssd1351_128x128_hicolor_hw_spi</a>;
<a name="l00559"></a>00559 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a89a89ab6b2179a0a640f95c9f9ca4ef1">u8g_dev_ssd1351_128x128_4x_hicolor_sw_spi</a>;
<a name="l00560"></a>00560 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#ad4cbe72d2371bf06b8a80661d6eb4ac9">u8g_dev_ssd1351_128x128_4x_hicolor_hw_spi</a>;
<a name="l00561"></a>00561 
<a name="l00562"></a>00562 <span class="comment">/* SSD1351 OLED (Freetronics, GPIOs set to high level) */</span>
<a name="l00563"></a>00563 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a75ac2ef897cb3d0a35766f48fc8b2cd1">u8g_dev_ssd1351_128x128gh_332_sw_spi</a>;
<a name="l00564"></a>00564 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#ac6274580f1df086981aafce8ee4eaac1">u8g_dev_ssd1351_128x128gh_332_hw_spi</a>;
<a name="l00565"></a>00565 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a4ca0f0617aa74e54348222c3641da61b">u8g_dev_ssd1351_128x128gh_4x_332_sw_spi</a>;
<a name="l00566"></a>00566 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a7152fdf5d79fca265c06fea94752a150">u8g_dev_ssd1351_128x128gh_4x_332_hw_spi</a>;
<a name="l00567"></a>00567 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#ac6e3e2ac5053389e74af184cd81dd05d">u8g_dev_ssd1351_128x128gh_hicolor_sw_spi</a>;
<a name="l00568"></a>00568 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a5f9bc2670330a634239e5ee3f91892e7">u8g_dev_ssd1351_128x128gh_hicolor_hw_spi</a>;
<a name="l00569"></a>00569 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#ac88835833100fdeb84b70859eec6f856">u8g_dev_ssd1351_128x128gh_4x_hicolor_sw_spi</a>;
<a name="l00570"></a>00570 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#af9802ef3f2bf2a6342bbf656f43903a8">u8g_dev_ssd1351_128x128gh_4x_hicolor_hw_spi</a>;
<a name="l00571"></a>00571 
<a name="l00572"></a>00572 <span class="comment">/* HT1632 */</span>
<a name="l00573"></a>00573 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#af8779971b17dbc4f9dc20237a8c2a0cb">u8g_dev_ht1632_24x16</a>;
<a name="l00574"></a>00574 
<a name="l00575"></a>00575 <span class="comment">/* A2 Micro Printer */</span>
<a name="l00576"></a>00576 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a5f7ba0dfbdfb036e6921815b95641007">u8g_dev_a2_micro_printer_384x240</a>;
<a name="l00577"></a>00577 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#a7fe130f00b539da91cc717d1743aee51">u8g_dev_a2_micro_printer_192x120_ds</a>;
<a name="l00578"></a>00578 
<a name="l00579"></a>00579 <span class="comment">/* u8g_virtual_screen.c  */</span>
<a name="l00580"></a>00580 <span class="keyword">extern</span> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> <a class="code" href="u8glib__ex_8h.html#adb3adbdd8a5b561b0b01b5f9684d399b">u8g_dev_vs</a>;
<a name="l00581"></a>00581 
<a name="l00582"></a>00582 
<a name="l00583"></a>00583 <span class="comment">/*===============================================================*/</span>
<a name="l00584"></a>00584 <span class="comment">/* device messages */</span>
<a name="l00585"></a>00585 
<a name="l00586"></a><a class="code" href="struct__u8g__dev__arg__pixel__t.html">00586</a> <span class="keyword">struct </span><a class="code" href="struct__u8g__dev__arg__pixel__t.html">_u8g_dev_arg_pixel_t</a>
<a name="l00587"></a>00587 {
<a name="l00588"></a><a class="code" href="struct__u8g__dev__arg__pixel__t.html#a14d91862d05b147bd3ddaa61dec19f21">00588</a>   u8g_uint_t <a class="code" href="struct__u8g__dev__arg__pixel__t.html#a0bd126a4a84709451f22abb1c7c704d0">x</a>, <a class="code" href="struct__u8g__dev__arg__pixel__t.html#a14d91862d05b147bd3ddaa61dec19f21">y</a>;              <span class="comment">/* will be modified */</span>
<a name="l00589"></a><a class="code" href="struct__u8g__dev__arg__pixel__t.html#a03ae8f6034c643489417f0a12a95966d">00589</a>   uint8_t <a class="code" href="struct__u8g__dev__arg__pixel__t.html#a03ae8f6034c643489417f0a12a95966d">pixel</a>;                  <span class="comment">/* will be modified, pixel sequence or transparency value */</span>
<a name="l00590"></a><a class="code" href="struct__u8g__dev__arg__pixel__t.html#a92abda0bec7c1c978fe96f87aad18067">00590</a>   uint8_t <a class="code" href="struct__u8g__dev__arg__pixel__t.html#a92abda0bec7c1c978fe96f87aad18067">dir</a>;
<a name="l00591"></a><a class="code" href="struct__u8g__dev__arg__pixel__t.html#aa99ddefe5089389e170ccbec18a60ec2">00591</a>   uint8_t <a class="code" href="struct__u8g__dev__arg__pixel__t.html#aa99ddefe5089389e170ccbec18a60ec2">color</a>;                        <span class="comment">/* color or index value, red value for true color mode */</span>
<a name="l00592"></a><a class="code" href="struct__u8g__dev__arg__pixel__t.html#adf8ea7940de241dd8dd533bbbf94147b">00592</a>   uint8_t <a class="code" href="struct__u8g__dev__arg__pixel__t.html#adf8ea7940de241dd8dd533bbbf94147b">hi_color</a>;             <span class="comment">/* high byte for 64K color mode, low byte is in &quot;color&quot;, green value for true color mode */</span>
<a name="l00593"></a><a class="code" href="struct__u8g__dev__arg__pixel__t.html#a287b397e90d7b995c81ff54e741f96b2">00593</a>   uint8_t <a class="code" href="struct__u8g__dev__arg__pixel__t.html#a287b397e90d7b995c81ff54e741f96b2">blue</a>;                 <span class="comment">/* blue value in true color mode */</span>
<a name="l00594"></a>00594 };
<a name="l00595"></a>00595 <span class="comment">/* typedef struct _u8g_dev_arg_pixel_t u8g_dev_arg_pixel_t; */</span> <span class="comment">/* forward decl */</span>
<a name="l00596"></a>00596 
<a name="l00597"></a>00597 <span class="comment">/* range for r,g,b: 0..255 */</span>
<a name="l00598"></a><a class="code" href="u8glib__ex_8h.html#a2988c6eb47cf943f7133f27bedfe733a">00598</a> <span class="preprocessor">#define U8G_GET_HICOLOR_BY_RGB(r,g,b) (((uint16_t)((r)&amp;0x0f8))&lt;&lt;8)|(((uint16_t)((g)&amp;0x0fc))&lt;&lt;3)|(((uint16_t)((b)&gt;&gt;3)))</span>
<a name="l00599"></a>00599 <span class="preprocessor"></span>
<a name="l00600"></a><a class="code" href="struct__u8g__dev__arg__bbx__t.html">00600</a> <span class="keyword">struct </span><a class="code" href="struct__u8g__dev__arg__bbx__t.html">_u8g_dev_arg_bbx_t</a>
<a name="l00601"></a>00601 {
<a name="l00602"></a><a class="code" href="struct__u8g__dev__arg__bbx__t.html#a14d91862d05b147bd3ddaa61dec19f21">00602</a>   u8g_uint_t <a class="code" href="struct__u8g__dev__arg__bbx__t.html#a0bd126a4a84709451f22abb1c7c704d0">x</a>, <a class="code" href="struct__u8g__dev__arg__bbx__t.html#a14d91862d05b147bd3ddaa61dec19f21">y</a>, <a class="code" href="struct__u8g__dev__arg__bbx__t.html#aea376a9f764f4a9cf33e2c9ae174001a">w</a>, <a class="code" href="struct__u8g__dev__arg__bbx__t.html#a3f4daedecdf3e9d710c56dcb6e80cecb">h</a>;
<a name="l00603"></a>00603 };
<a name="l00604"></a>00604 <span class="comment">/* typedef struct _u8g_dev_arg_bbx_t u8g_dev_arg_bbx_t; */</span> <span class="comment">/* forward decl */</span>
<a name="l00605"></a>00605 
<a name="l00606"></a><a class="code" href="struct__u8g__box__t.html">00606</a> <span class="keyword">struct </span><a class="code" href="struct__u8g__box__t.html">_u8g_box_t</a>
<a name="l00607"></a>00607 {
<a name="l00608"></a><a class="code" href="struct__u8g__box__t.html#a8977e61ef70ab6db468b58d77b1031e4">00608</a>   u8g_uint_t <a class="code" href="struct__u8g__box__t.html#a1551f8fbcff0e015b97c9d0a6fc83b7a">x0</a>, <a class="code" href="struct__u8g__box__t.html#a33614956497a398eeea02cf06ae0ee34">y0</a>, <a class="code" href="struct__u8g__box__t.html#ae903dfc85a06d24c856d01ecc888a805">x1</a>, <a class="code" href="struct__u8g__box__t.html#a8977e61ef70ab6db468b58d77b1031e4">y1</a>;
<a name="l00609"></a>00609 };
<a name="l00610"></a>00610 <span class="comment">/* typedef struct _u8g_box_t u8g_box_t; */</span> <span class="comment">/* forward decl */</span>
<a name="l00611"></a>00611 
<a name="l00612"></a><a class="code" href="struct__u8g__dev__arg__irgb__t.html">00612</a> <span class="keyword">struct </span><a class="code" href="struct__u8g__dev__arg__irgb__t.html">_u8g_dev_arg_irgb_t</a>
<a name="l00613"></a>00613 {
<a name="l00614"></a><a class="code" href="struct__u8g__dev__arg__irgb__t.html#af1d72be24123b235c1fe53bfbfc771e4">00614</a>   u8g_uint_t <a class="code" href="struct__u8g__dev__arg__irgb__t.html#a22d765af22623542e427109d45d85809">idx</a>, <a class="code" href="struct__u8g__dev__arg__irgb__t.html#af1d72be24123b235c1fe53bfbfc771e4">r</a>, <a class="code" href="struct__u8g__dev__arg__irgb__t.html#a7fd191d918bc275c56acabcb5aa0bf5a">g</a>, <a class="code" href="struct__u8g__dev__arg__irgb__t.html#ab23a75b58e1f5f0f406890f2cdd77376">b</a>;              <span class="comment">/* index with rgb value */</span>
<a name="l00615"></a>00615 };
<a name="l00616"></a>00616 <span class="comment">/* typedef struct _u8g_dev_arg_irgb_t u8g_dev_arg_irgb_t; */</span> <span class="comment">/* forward decl */</span>
<a name="l00617"></a>00617 
<a name="l00618"></a>00618 
<a name="l00619"></a>00619 
<a name="l00620"></a><a class="code" href="u8glib__ex_8h.html#a34fd7e41b79f81e31b3149d5865d8f3d">00620</a> <span class="preprocessor">#define U8G_DEV_MSG_INIT                10</span>
<a name="l00621"></a><a class="code" href="u8glib__ex_8h.html#a376480714489edfb937e334b13a74d6b">00621</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_DEV_MSG_STOP                  11</span>
<a name="l00622"></a>00622 <span class="preprocessor"></span>
<a name="l00623"></a>00623 <span class="comment">/* arg: pointer to uint8_t, contranst value between 0 and 255 */</span>
<a name="l00624"></a><a class="code" href="u8glib__ex_8h.html#a7980ce28b30e89b42c60cf26f3703e35">00624</a> <span class="preprocessor">#define U8G_DEV_MSG_CONTRAST            15</span>
<a name="l00625"></a>00625 <span class="preprocessor"></span>
<a name="l00626"></a><a class="code" href="u8glib__ex_8h.html#acaa8df1efdae0c5628708715fa32d217">00626</a> <span class="preprocessor">#define U8G_DEV_MSG_SLEEP_ON            16</span>
<a name="l00627"></a><a class="code" href="u8glib__ex_8h.html#a5a88e8306a2f96015f33077f26327943">00627</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_DEV_MSG_SLEEP_OFF            17</span>
<a name="l00628"></a>00628 <span class="preprocessor"></span>
<a name="l00629"></a><a class="code" href="u8glib__ex_8h.html#a072af282af96a7c094fd6c52232c2f5e">00629</a> <span class="preprocessor">#define U8G_DEV_MSG_PAGE_FIRST                  20</span>
<a name="l00630"></a><a class="code" href="u8glib__ex_8h.html#a6bd7acf17c0a8391a9ad449f72273bd6">00630</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_DEV_MSG_PAGE_NEXT                    21</span>
<a name="l00631"></a>00631 <span class="preprocessor"></span>
<a name="l00632"></a>00632 <span class="comment">/* arg: u8g_dev_arg_bbx_t * */</span>
<a name="l00633"></a>00633 <span class="comment">/* new algorithm with U8G_DEV_MSG_GET_PAGE_BOX makes this msg obsolete */</span>
<a name="l00634"></a>00634 <span class="comment">/* #define U8G_DEV_MSG_IS_BBX_INTERSECTION 22 */</span>
<a name="l00635"></a>00635 
<a name="l00636"></a>00636 <span class="comment">/* arg: u8g_box_t *, fill structure with current page properties */</span>
<a name="l00637"></a><a class="code" href="u8glib__ex_8h.html#a7ccd22af2fd9efd6a0961a979fd8a04e">00637</a> <span class="preprocessor">#define U8G_DEV_MSG_GET_PAGE_BOX 23</span>
<a name="l00638"></a>00638 <span class="preprocessor"></span>
<a name="l00639"></a>00639 <span class="comment">/*</span>
<a name="l00640"></a>00640 <span class="comment">#define U8G_DEV_MSG_PRIMITIVE_START             30</span>
<a name="l00641"></a>00641 <span class="comment">#define U8G_DEV_MSG_PRIMITIVE_END               31</span>
<a name="l00642"></a>00642 <span class="comment">*/</span>
<a name="l00643"></a>00643 
<a name="l00644"></a>00644 <span class="comment">/* arg: u8g_dev_arg_pixel_t * */</span>
<a name="l00645"></a><a class="code" href="u8glib__ex_8h.html#a81a476e3a6419e78b93f66b7dc75c317">00645</a> <span class="preprocessor">#define U8G_DEV_MSG_SET_TPIXEL                          44</span>
<a name="l00646"></a><a class="code" href="u8glib__ex_8h.html#ac1b6b4c2bf23a0ec66a34c5e3e3362a5">00646</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_DEV_MSG_SET_4TPIXEL                 45</span>
<a name="l00647"></a>00647 <span class="preprocessor"></span>
<a name="l00648"></a><a class="code" href="u8glib__ex_8h.html#ae439ba8e396e0254d341662235de53ac">00648</a> <span class="preprocessor">#define U8G_DEV_MSG_SET_PIXEL                           50</span>
<a name="l00649"></a><a class="code" href="u8glib__ex_8h.html#a23e74f1821719a43a7fc520a2f1b15c6">00649</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_DEV_MSG_SET_8PIXEL                          59</span>
<a name="l00650"></a>00650 <span class="preprocessor"></span>
<a name="l00651"></a><a class="code" href="u8glib__ex_8h.html#a004a15da87b3ed36add4ae26b07db815">00651</a> <span class="preprocessor">#define U8G_DEV_MSG_SET_COLOR_ENTRY                60</span>
<a name="l00652"></a>00652 <span class="preprocessor"></span>
<a name="l00653"></a><a class="code" href="u8glib__ex_8h.html#a6b5a5e19b21f03ca517adb640ac0705f">00653</a> <span class="preprocessor">#define U8G_DEV_MSG_SET_XY_CB                           61</span>
<a name="l00654"></a>00654 <span class="preprocessor"></span>
<a name="l00655"></a><a class="code" href="u8glib__ex_8h.html#abae9d4c5dd2273490e5d6fb316ad5a02">00655</a> <span class="preprocessor">#define U8G_DEV_MSG_GET_WIDTH                           70</span>
<a name="l00656"></a><a class="code" href="u8glib__ex_8h.html#a601f8b6a720ab1530e0759186803f249">00656</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_DEV_MSG_GET_HEIGHT                           71</span>
<a name="l00657"></a><a class="code" href="u8glib__ex_8h.html#aefd09b54d90de3a2116639518f8d8272">00657</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_DEV_MSG_GET_MODE                  72</span>
<a name="l00658"></a>00658 <span class="preprocessor"></span>
<a name="l00659"></a>00659 <span class="comment">/*===============================================================*/</span>
<a name="l00660"></a>00660 <span class="comment">/* device modes */</span>
<a name="l00661"></a><a class="code" href="u8glib__ex_8h.html#aae8476f3eb030ad51502779ebb5398bc">00661</a> <span class="preprocessor">#define U8G_MODE(is_index_mode, is_color, bits_per_pixel) (((is_index_mode)&lt;&lt;6) | ((is_color)&lt;&lt;5)|(bits_per_pixel))</span>
<a name="l00662"></a>00662 <span class="preprocessor"></span>
<a name="l00663"></a><a class="code" href="u8glib__ex_8h.html#aaca89e85bf92947e2c58cf5a090561ce">00663</a> <span class="preprocessor">#define U8G_MODE_UNKNOWN     0</span>
<a name="l00664"></a><a class="code" href="u8glib__ex_8h.html#a4a03329b13acf5ca299a11dbde33ed6d">00664</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_MODE_BW     U8G_MODE(0, 0, 1)</span>
<a name="l00665"></a><a class="code" href="u8glib__ex_8h.html#a8aa1413265e309c6ef9e69f5a2046ccc">00665</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_MODE_GRAY2BIT     U8G_MODE(0, 0, 2)</span>
<a name="l00666"></a><a class="code" href="u8glib__ex_8h.html#a103aab5c2d5cde46e52b9a2f26581d33">00666</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_MODE_R3G3B2  U8G_MODE(0, 1, 8)</span>
<a name="l00667"></a><a class="code" href="u8glib__ex_8h.html#af2a5e286aae45373993b105ae8ebfa2f">00667</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_MODE_INDEX  U8G_MODE(1, 1, 8)</span>
<a name="l00668"></a>00668 <span class="preprocessor"></span><span class="comment">/* hicolor is R5G6B5 */</span>
<a name="l00669"></a><a class="code" href="u8glib__ex_8h.html#a8258bd5a31f7944f49b10cd239c26a66">00669</a> <span class="preprocessor">#define U8G_MODE_HICOLOR  U8G_MODE(0, 1, 16)</span>
<a name="l00670"></a>00670 <span class="preprocessor"></span><span class="comment">/* truecolor  */</span>
<a name="l00671"></a><a class="code" href="u8glib__ex_8h.html#a76e813bb510c286ebf5a3df108dfef78">00671</a> <span class="preprocessor">#define U8G_MODE_TRUECOLOR  U8G_MODE(0, 1, 24)</span>
<a name="l00672"></a>00672 <span class="preprocessor"></span>
<a name="l00673"></a>00673 
<a name="l00674"></a><a class="code" href="u8glib__ex_8h.html#aadf85888176a0fff2672bb8740880c14">00674</a> <span class="preprocessor">#define U8G_MODE_GET_BITS_PER_PIXEL(mode) ((mode)&amp;31)</span>
<a name="l00675"></a><a class="code" href="u8glib__ex_8h.html#ab03a242555e66ff311ea12a64e5df61b">00675</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_MODE_IS_COLOR(mode) (((mode)&amp;32)==0?0:1)</span>
<a name="l00676"></a><a class="code" href="u8glib__ex_8h.html#aa2733fee67e11e5debc462558d72bf52">00676</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_MODE_IS_INDEX_MODE(mode) (((mode)&amp;64)==0?0:1)</span>
<a name="l00677"></a>00677 <span class="preprocessor"></span>
<a name="l00678"></a>00678 
<a name="l00679"></a>00679 <span class="comment">/*===============================================================*/</span>
<a name="l00680"></a>00680 <span class="comment">/* com options */</span>
<a name="l00681"></a>00681 
<a name="l00682"></a>00682 <span class="comment">/* uncomment the following line for Atmega HW SPI double speed, issue 89 */</span>
<a name="l00683"></a>00683 <span class="comment">/* #define U8G_HW_SPI_2X 1 */</span>
<a name="l00684"></a>00684 
<a name="l00685"></a>00685 <span class="comment">/* com messages */</span>
<a name="l00686"></a>00686 
<a name="l00687"></a><a class="code" href="u8glib__ex_8h.html#a225a41aaa3afd074315faf810d8c72b7">00687</a> <span class="preprocessor">#define U8G_COM_MSG_STOP        0</span>
<a name="l00688"></a><a class="code" href="u8glib__ex_8h.html#a4c4b2a86756c48511ee2d80fdce8fdc1">00688</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_COM_MSG_INIT        1</span>
<a name="l00689"></a>00689 <span class="preprocessor"></span>
<a name="l00690"></a><a class="code" href="u8glib__ex_8h.html#a707738f973a52f84081b6e8243f24b93">00690</a> <span class="preprocessor">#define U8G_COM_MSG_ADDRESS 2</span>
<a name="l00691"></a>00691 <span class="preprocessor"></span>
<a name="l00692"></a>00692 <span class="comment">/* CHIP_SELECT argument: number of the chip which needs to be activated, so this is more like high active */</span>
<a name="l00693"></a><a class="code" href="u8glib__ex_8h.html#ac5b6ded098abcb5de9ab579c2c278dec">00693</a> <span class="preprocessor">#define U8G_COM_MSG_CHIP_SELECT 3</span>
<a name="l00694"></a>00694 <span class="preprocessor"></span>
<a name="l00695"></a><a class="code" href="u8glib__ex_8h.html#ae9e98c1cadea862056b3684ea79626c7">00695</a> <span class="preprocessor">#define U8G_COM_MSG_RESET 4</span>
<a name="l00696"></a>00696 <span class="preprocessor"></span>
<a name="l00697"></a><a class="code" href="u8glib__ex_8h.html#a6554b69b48d471383ab4742e0646faa7">00697</a> <span class="preprocessor">#define U8G_COM_MSG_WRITE_BYTE 5</span>
<a name="l00698"></a><a class="code" href="u8glib__ex_8h.html#abee7a3415b37581dc37a340be97ecccc">00698</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_COM_MSG_WRITE_SEQ 6</span>
<a name="l00699"></a><a class="code" href="u8glib__ex_8h.html#a913bfd86af5347f33acb243e9d40743c">00699</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_COM_MSG_WRITE_SEQ_P 7</span>
<a name="l00700"></a>00700 <span class="preprocessor"></span>
<a name="l00701"></a>00701 
<a name="l00702"></a>00702 <span class="comment">/* com driver */</span>
<a name="l00703"></a>00703 uint8_t <a class="code" href="u8glib__ex_8h.html#ac42e55770bee2ee7bf083a7892d926c6">u8g_com_null_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t msg, uint8_t arg_val, <span class="keywordtype">void</span> *arg_ptr);               <span class="comment">/* u8g_com_null.c */</span>
<a name="l00704"></a>00704 uint8_t <a class="code" href="u8glib__ex_8h.html#a3cfa88752e7f324e349dd933b867ef4d">u8g_com_arduino_std_sw_spi_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t msg, uint8_t arg_val, <span class="keywordtype">void</span> *arg_ptr);        <span class="comment">/* u8g_com_arduino_std_sw_spi.c */</span>
<a name="l00705"></a>00705 uint8_t <a class="code" href="u8glib__ex_8h.html#ac3ec757a03a3ec002eeda5dc273e78e1">u8g_com_arduino_hw_usart_spi_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t msg, uint8_t arg_val, <span class="keywordtype">void</span> *arg_ptr);      <span class="comment">/* u8g_com_atmega_hw_usart_spi.c */</span>
<a name="l00706"></a>00706 uint8_t <a class="code" href="u8glib__ex_8h.html#a5e7b417123b756b9c555fad3fe31e1e1">u8g_com_arduino_sw_spi_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t msg, uint8_t arg_val, <span class="keywordtype">void</span> *arg_ptr);        <span class="comment">/* u8g_com_arduino_sw_spi.c */</span>
<a name="l00707"></a>00707 uint8_t <a class="code" href="u8glib__ex_8h.html#a3e3a260a3f3e0e31eaaf46b2cacb9193">u8g_com_arduino_hw_spi_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t msg, uint8_t arg_val, <span class="keywordtype">void</span> *arg_ptr);          <span class="comment">/* u8g_com_arduino_hw_spi.c */</span>
<a name="l00708"></a>00708 uint8_t <a class="code" href="u8glib__ex_8h.html#a9b77a26b5754e304452aeb70f0c50da7">u8g_com_arduino_ATtiny85_std_hw_spi_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t msg, uint8_t arg_val, <span class="keywordtype">void</span> *arg_ptr);          <span class="comment">/* u8g_arduino_ATTiny85_std_hw_spi.c */</span>
<a name="l00709"></a>00709 uint8_t <a class="code" href="u8glib__ex_8h.html#a673c4d08638ec3da5284cf9aaac3ac00">u8g_com_arduino_st7920_spi_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t msg, uint8_t arg_val, <span class="keywordtype">void</span> *arg_ptr);  <span class="comment">/* u8g_com_arduino_st7920_spi.c */</span>
<a name="l00710"></a>00710 uint8_t <a class="code" href="u8glib__ex_8h.html#a2caab5ab85934b5e14b8f19e1e37ea9d">u8g_com_arduino_st7920_custom_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t msg, uint8_t arg_val, <span class="keywordtype">void</span> *arg_ptr); <span class="comment">/* u8g_com_arduino_st7920_custom.c */</span>
<a name="l00711"></a>00711 uint8_t <a class="code" href="u8glib__ex_8h.html#ae559f50e65948a0c0900efef45e82d5b">u8g_com_arduino_st7920_hw_spi_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t msg, uint8_t arg_val, <span class="keywordtype">void</span> *arg_ptr);  <span class="comment">/* u8g_com_arduino_st7920_hw_spi.c */</span>
<a name="l00712"></a>00712 uint8_t <a class="code" href="u8glib__ex_8h.html#af531baee9de4cd3d74c73573754ae099">u8g_com_arduino_parallel_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t msg, uint8_t arg_val, <span class="keywordtype">void</span> *arg_ptr);           <span class="comment">/* u8g_com_arduino_parallel.c */</span>
<a name="l00713"></a>00713 uint8_t <a class="code" href="u8glib__ex_8h.html#adc38462b2f208299e9a9c81003233c9b">u8g_com_arduino_fast_parallel_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t msg, uint8_t arg_val, <span class="keywordtype">void</span> *arg_ptr);      <span class="comment">/* u8g_com_arduino_fast_parallel.c */</span>
<a name="l00714"></a>00714 uint8_t <a class="code" href="u8glib__ex_8h.html#ac4b0b95b03031d43133ea99a5c4a2d62">u8g_com_arduino_port_d_wr_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t msg, uint8_t arg_val, <span class="keywordtype">void</span> *arg_ptr);       <span class="comment">/* u8g_com_arduino_port_d_wr.c */</span>
<a name="l00715"></a>00715 uint8_t <a class="code" href="u8glib__ex_8h.html#a74e026038c04e520e508bbbf4ea38967">u8g_com_arduino_no_en_parallel_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t msg, uint8_t arg_val, <span class="keywordtype">void</span> *arg_ptr);     <span class="comment">/* u8g_com_arduino_no_en_parallel.c */</span>
<a name="l00716"></a>00716 uint8_t <a class="code" href="u8glib__ex_8h.html#ad50aebf4e5e9ba51e24b34cbaf7e3acf">u8g_com_arduino_ssd_i2c_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t msg, uint8_t arg_val, <span class="keywordtype">void</span> *arg_ptr);            <span class="comment">/* u8g_com_arduino_ssd_i2c.c */</span>
<a name="l00717"></a>00717 uint8_t <a class="code" href="u8glib__ex_8h.html#a09aa9aa14bbb6b092613c62df6c8c55f">u8g_com_arduino_t6963_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t msg, uint8_t arg_val, <span class="keywordtype">void</span> *arg_ptr);                      <span class="comment">/* u8g_com_arduino_t6963.c */</span>
<a name="l00718"></a>00718 
<a name="l00719"></a>00719 
<a name="l00720"></a>00720 uint8_t <a class="code" href="u8glib__ex_8h.html#a3d258263387c8dbef0d5017286a47d9d">u8g_com_atmega_hw_spi_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t msg, uint8_t arg_val, <span class="keywordtype">void</span> *arg_ptr);      <span class="comment">/* u8g_com_atmega_hw_spi.c */</span>
<a name="l00721"></a>00721 uint8_t <a class="code" href="u8glib__ex_8h.html#a9fb03e6f5987768c8657b2dd162e7352">u8g_com_atmega_sw_spi_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t msg, uint8_t arg_val, <span class="keywordtype">void</span> *arg_ptr);      <span class="comment">/* u8g_com_atmega_sw_spi.c */</span>
<a name="l00722"></a>00722 uint8_t <a class="code" href="u8glib__ex_8h.html#a942cbf5ff3b7d7c63ddc07c195369fa1">u8g_com_atmega_st7920_sw_spi_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t msg, uint8_t arg_val, <span class="keywordtype">void</span> *arg_ptr);       <span class="comment">/* u8g_com_atmega_st7920_spi.c */</span>
<a name="l00723"></a>00723 uint8_t <a class="code" href="u8glib__ex_8h.html#a84cf1e92ddcb5f9849d1c08f4a46d760">u8g_com_atmega_st7920_hw_spi_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t msg, uint8_t arg_val, <span class="keywordtype">void</span> *arg_ptr);
<a name="l00724"></a>00724 uint8_t <a class="code" href="u8glib__ex_8h.html#a803702301cc11fe7686295b7bdcccdbe">u8g_com_atmega_parallel_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t msg, uint8_t arg_val, <span class="keywordtype">void</span> *arg_ptr);    <span class="comment">/* u8g_com_atmega_parallel.c */</span>
<a name="l00725"></a>00725 
<a name="l00726"></a>00726 
<a name="l00727"></a>00727 <span class="comment">/*</span>
<a name="l00728"></a>00728 <span class="comment">  Translation of system specific com drives to generic com names</span>
<a name="l00729"></a>00729 <span class="comment">  At the moment, the following generic com drives are available</span>
<a name="l00730"></a>00730 <span class="comment">  U8G_COM_HW_SPI</span>
<a name="l00731"></a>00731 <span class="comment">  U8G_COM_SW_SPI</span>
<a name="l00732"></a>00732 <span class="comment">  U8G_COM_PARALLEL</span>
<a name="l00733"></a>00733 <span class="comment">  U8G_COM_T6963</span>
<a name="l00734"></a>00734 <span class="comment">  U8G_COM_FAST_PARALLEL</span>
<a name="l00735"></a>00735 <span class="comment">  U8G_COM_SSD_I2C</span>
<a name="l00736"></a>00736 <span class="comment"></span>
<a name="l00737"></a>00737 <span class="comment">defined(__18CXX) || defined(__PIC32MX)</span>
<a name="l00738"></a>00738 <span class="comment"></span>
<a name="l00739"></a>00739 <span class="comment">*/</span>
<a name="l00740"></a>00740 <span class="comment">/* ==== HW SPI, Arduino ====*/</span>
<a name="l00741"></a>00741 <span class="preprocessor">#if defined(ARDUINO)</span>
<a name="l00742"></a>00742 <span class="preprocessor"></span><span class="preprocessor">#if defined(__AVR__)</span>
<a name="l00743"></a>00743 <span class="preprocessor"></span>
<a name="l00744"></a>00744 <span class="preprocessor">#if defined(__AVR_ATtiny85__)</span>
<a name="l00745"></a>00745 <span class="preprocessor"></span><span class="preprocessor">#define U8G_COM_HW_SPI u8g_com_arduino_ATtiny85_std_hw_spi_fn</span>
<a name="l00746"></a>00746 <span class="preprocessor"></span><span class="preprocessor">#define U8G_COM_ST7920_HW_SPI u8g_com_null_fn</span>
<a name="l00747"></a>00747 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00748"></a>00748 <span class="preprocessor"></span>
<a name="l00749"></a>00749 <span class="preprocessor">#define U8G_COM_HW_SPI u8g_com_arduino_hw_spi_fn</span>
<a name="l00750"></a>00750 <span class="preprocessor"></span><span class="preprocessor">#if defined(__AVR_ATmega32U4__)</span>
<a name="l00751"></a>00751 <span class="preprocessor"></span><span class="preprocessor">#define U8G_COM_HW_USART_SPI u8g_com_arduino_hw_usart_spi_fn</span>
<a name="l00752"></a>00752 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* __AVR_ATmega32U4__ */</span>
<a name="l00753"></a>00753 <span class="preprocessor">#define U8G_COM_ST7920_HW_SPI u8g_com_arduino_st7920_hw_spi_fn</span>
<a name="l00754"></a>00754 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* __AVR_ATtiny85__ */</span>
<a name="l00755"></a>00755 
<a name="l00756"></a>00756 <span class="preprocessor">#elif defined(__18CXX) || defined(__PIC32MX)</span>
<a name="l00757"></a>00757 <span class="preprocessor"></span><span class="preprocessor">#define U8G_COM_HW_SPI u8g_com_null_fn</span>
<a name="l00758"></a>00758 <span class="preprocessor"></span><span class="preprocessor">#define U8G_COM_ST7920_HW_SPI u8g_com_null_fn</span>
<a name="l00759"></a>00759 <span class="preprocessor"></span><span class="preprocessor">#elif defined(__arm__)   </span><span class="comment">/* Arduino Due */</span>
<a name="l00760"></a>00760 <span class="preprocessor">#define U8G_COM_HW_SPI u8g_com_arduino_hw_spi_fn</span>
<a name="l00761"></a>00761 <span class="preprocessor"></span><span class="preprocessor">#define U8G_COM_ST7920_HW_SPI u8g_com_null_fn</span>
<a name="l00762"></a>00762 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00763"></a>00763 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00764"></a>00764 <span class="preprocessor"></span><span class="comment">/* ==== HW SPI, not Arduino ====*/</span>
<a name="l00765"></a>00765 <span class="preprocessor">#ifndef U8G_COM_HW_SPI</span>
<a name="l00766"></a>00766 <span class="preprocessor"></span><span class="preprocessor">#if defined(__AVR__)</span>
<a name="l00767"></a>00767 <span class="preprocessor"></span><span class="preprocessor">#define U8G_COM_HW_SPI u8g_com_atmega_hw_spi_fn</span>
<a name="l00768"></a>00768 <span class="preprocessor"></span><span class="preprocessor">#define U8G_COM_ST7920_HW_SPI u8g_com_atmega_st7920_hw_spi_fn</span>
<a name="l00769"></a>00769 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00770"></a>00770 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00771"></a>00771 <span class="preprocessor"></span><span class="preprocessor">#ifndef U8G_COM_HW_SPI</span>
<a name="l00772"></a><a class="code" href="u8glib__ex_8h.html#a527acc4ca05d0b48140adc000f736b2b">00772</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_COM_HW_SPI u8g_com_null_fn</span>
<a name="l00773"></a><a class="code" href="u8glib__ex_8h.html#a4f63ac0b0e856ee284d89967032e8d42">00773</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_COM_ST7920_HW_SPI u8g_com_null_fn</span>
<a name="l00774"></a>00774 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00775"></a>00775 <span class="preprocessor"></span>
<a name="l00776"></a>00776 <span class="preprocessor">#ifndef U8G_COM_HW_USART_SPI</span>
<a name="l00777"></a><a class="code" href="u8glib__ex_8h.html#a80df88c774a5e957259ce4e24bddad62">00777</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_COM_HW_USART_SPI u8g_com_null_fn</span>
<a name="l00778"></a>00778 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00779"></a>00779 <span class="preprocessor"></span>
<a name="l00780"></a>00780 
<a name="l00781"></a>00781 <span class="comment">/* ==== SW SPI, Arduino ====*/</span>
<a name="l00782"></a>00782 <span class="preprocessor">#if defined(ARDUINO)</span>
<a name="l00783"></a>00783 <span class="preprocessor"></span><span class="preprocessor">#if defined(__AVR__)</span>
<a name="l00784"></a>00784 <span class="preprocessor"></span><span class="preprocessor">#define U8G_COM_SW_SPI u8g_com_arduino_sw_spi_fn</span>
<a name="l00785"></a>00785 <span class="preprocessor"></span><span class="preprocessor">#define U8G_COM_ST7920_SW_SPI u8g_com_arduino_st7920_spi_fn</span>
<a name="l00786"></a>00786 <span class="preprocessor"></span><span class="preprocessor">#elif defined(__18CXX) || defined(__PIC32MX)</span>
<a name="l00787"></a>00787 <span class="preprocessor"></span><span class="preprocessor">#define U8G_COM_SW_SPI u8g_com_arduino_sw_spi_fn</span>
<a name="l00788"></a>00788 <span class="preprocessor"></span><span class="preprocessor">#define U8G_COM_ST7920_SW_SPI u8g_com_arduino_st7920_spi_fn</span>
<a name="l00789"></a>00789 <span class="preprocessor"></span><span class="preprocessor">#elif defined(__arm__)   </span><span class="comment">/* Arduino Due */</span>
<a name="l00790"></a>00790 <span class="comment">//#define U8G_COM_SW_SPI u8g_com_arduino_std_sw_spi_fn</span>
<a name="l00791"></a>00791 <span class="preprocessor">#define U8G_COM_SW_SPI u8g_com_arduino_sw_spi_fn</span>
<a name="l00792"></a>00792 <span class="preprocessor"></span><span class="preprocessor">#define U8G_COM_ST7920_SW_SPI u8g_com_arduino_st7920_spi_fn</span>
<a name="l00793"></a>00793 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00794"></a>00794 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00795"></a>00795 <span class="preprocessor"></span>
<a name="l00796"></a>00796 <span class="preprocessor">#ifndef U8G_COM_SW_SPI</span>
<a name="l00797"></a>00797 <span class="preprocessor"></span><span class="comment">/* ==== SW SPI, not Arduino ====*/</span>
<a name="l00798"></a>00798 <span class="preprocessor">#if defined(__AVR__)</span>
<a name="l00799"></a>00799 <span class="preprocessor"></span><span class="preprocessor">#define U8G_COM_SW_SPI u8g_com_atmega_sw_spi_fn</span>
<a name="l00800"></a>00800 <span class="preprocessor"></span><span class="preprocessor">#define U8G_COM_ST7920_SW_SPI u8g_com_atmega_st7920_sw_spi_fn</span>
<a name="l00801"></a>00801 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00802"></a>00802 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00803"></a>00803 <span class="preprocessor"></span><span class="preprocessor">#ifndef U8G_COM_SW_SPI</span>
<a name="l00804"></a><a class="code" href="u8glib__ex_8h.html#aa7bba64a926ff04e5d4a00117a13e8a1">00804</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_COM_SW_SPI u8g_com_null_fn</span>
<a name="l00805"></a><a class="code" href="u8glib__ex_8h.html#a98d438d69b3855c4e74d9597e807b587">00805</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_COM_ST7920_SW_SPI u8g_com_null_fn</span>
<a name="l00806"></a>00806 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00807"></a>00807 <span class="preprocessor"></span>
<a name="l00808"></a>00808 <span class="comment">/* ==== Parallel iinterface, Arduino ====*/</span>
<a name="l00809"></a>00809 <span class="preprocessor">#if defined(ARDUINO)</span>
<a name="l00810"></a>00810 <span class="preprocessor"></span><span class="preprocessor">#if defined(__AVR__)</span>
<a name="l00811"></a>00811 <span class="preprocessor"></span><span class="preprocessor">#define U8G_COM_PARALLEL u8g_com_arduino_parallel_fn</span>
<a name="l00812"></a>00812 <span class="preprocessor"></span><span class="preprocessor">#define U8G_COM_FAST_PARALLEL u8g_com_arduino_fast_parallel_fn</span>
<a name="l00813"></a>00813 <span class="preprocessor"></span><span class="preprocessor">#define U8G_COM_T6963  u8g_com_arduino_t6963_fn</span>
<a name="l00814"></a>00814 <span class="preprocessor"></span><span class="preprocessor">#else </span><span class="comment">/* Arduino Due, Chipkit PIC32 */</span>
<a name="l00815"></a>00815 <span class="preprocessor">#define U8G_COM_PARALLEL u8g_com_arduino_parallel_fn</span>
<a name="l00816"></a>00816 <span class="preprocessor"></span><span class="preprocessor">#define U8G_COM_FAST_PARALLEL u8g_com_arduino_parallel_fn</span>
<a name="l00817"></a>00817 <span class="preprocessor"></span><span class="preprocessor">#define U8G_COM_T6963  u8g_com_null_fn</span>
<a name="l00818"></a>00818 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00819"></a>00819 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00820"></a>00820 <span class="preprocessor"></span><span class="preprocessor">#ifndef U8G_COM_PARALLEL</span>
<a name="l00821"></a>00821 <span class="preprocessor"></span><span class="preprocessor">#if defined(__AVR__)</span>
<a name="l00822"></a>00822 <span class="preprocessor"></span><span class="preprocessor">#define U8G_COM_PARALLEL u8g_com_atmega_parallel_fn</span>
<a name="l00823"></a>00823 <span class="preprocessor"></span><span class="preprocessor">#define U8G_COM_FAST_PARALLEL u8g_com_atmega_parallel_fn</span>
<a name="l00824"></a>00824 <span class="preprocessor"></span><span class="preprocessor">#define U8G_COM_T6963  u8g_com_null_fn</span>
<a name="l00825"></a>00825 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00826"></a>00826 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00827"></a>00827 <span class="preprocessor"></span><span class="preprocessor">#ifndef U8G_COM_PARALLEL</span>
<a name="l00828"></a><a class="code" href="u8glib__ex_8h.html#a01db1ad5bf91d31fd1cc43353fb61d8b">00828</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_COM_PARALLEL u8g_com_null_fn</span>
<a name="l00829"></a><a class="code" href="u8glib__ex_8h.html#a2d64ca77be4419f641522a9131776af4">00829</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_COM_FAST_PARALLEL u8g_com_null_fn</span>
<a name="l00830"></a><a class="code" href="u8glib__ex_8h.html#a5ee24e1c7afe373b3f8a27507ba37293">00830</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_COM_T6963  u8g_com_null_fn</span>
<a name="l00831"></a>00831 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00832"></a>00832 <span class="preprocessor"></span>
<a name="l00833"></a>00833 <span class="preprocessor">#if defined(ARDUINO)</span>
<a name="l00834"></a>00834 <span class="preprocessor"></span><span class="preprocessor">#if defined(__AVR__)</span>
<a name="l00835"></a>00835 <span class="preprocessor"></span><span class="preprocessor">#define U8G_COM_SSD_I2C u8g_com_arduino_ssd_i2c_fn</span>
<a name="l00836"></a>00836 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00837"></a>00837 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00838"></a>00838 <span class="preprocessor"></span>
<a name="l00839"></a>00839 <span class="preprocessor">#ifndef U8G_COM_SSD_I2C</span>
<a name="l00840"></a>00840 <span class="preprocessor"></span><span class="preprocessor">#if defined(__AVR__)</span>
<a name="l00841"></a>00841 <span class="preprocessor"></span><span class="comment">/* AVR variant can use the arduino version at the moment */</span>
<a name="l00842"></a>00842 <span class="preprocessor">#define U8G_COM_SSD_I2C u8g_com_arduino_ssd_i2c_fn</span>
<a name="l00843"></a>00843 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00844"></a>00844 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00845"></a>00845 <span class="preprocessor"></span><span class="preprocessor">#ifndef U8G_COM_SSD_I2C</span>
<a name="l00846"></a><a class="code" href="u8glib__ex_8h.html#aa1ebd3ab52b1fc8ab91021ff956294d2">00846</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_COM_SSD_I2C u8g_com_null_fn</span>
<a name="l00847"></a>00847 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00848"></a>00848 <span class="preprocessor"></span>
<a name="l00849"></a>00849 
<a name="l00850"></a>00850 
<a name="l00851"></a>00851 <span class="comment">/*===============================================================*/</span>
<a name="l00852"></a>00852 <span class="comment">/* com api */</span>
<a name="l00853"></a>00853 
<a name="l00854"></a><a class="code" href="u8glib__ex_8h.html#a9a71d670a23198fb6c8b528609cd3b3d">00854</a> <span class="preprocessor">#define U8G_SPI_CLK_CYCLE_50NS 1</span>
<a name="l00855"></a><a class="code" href="u8glib__ex_8h.html#a224ed45340244c8c2b748b6395b450ac">00855</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_SPI_CLK_CYCLE_300NS 2</span>
<a name="l00856"></a><a class="code" href="u8glib__ex_8h.html#a27adbf385245f5d6d6be752c4211334f">00856</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_SPI_CLK_CYCLE_400NS 3</span>
<a name="l00857"></a><a class="code" href="u8glib__ex_8h.html#ad3b4a179a8dc08236039953973eb0160">00857</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_SPI_CLK_CYCLE_NONE 255</span>
<a name="l00858"></a>00858 <span class="preprocessor"></span>
<a name="l00859"></a>00859 uint8_t <a class="code" href="u8glib__ex_8h.html#a518771bfce1a599503b3063d456be9b9">u8g_InitCom</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t clk_cycle_time);
<a name="l00860"></a>00860 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#ac5d2984c1861d06a975df28f2fd75b1e">u8g_StopCom</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev);
<a name="l00861"></a>00861 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a74388bf07885b4776b9cf7479306bb7c">u8g_EnableCom</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev);         <span class="comment">/* obsolete */</span>
<a name="l00862"></a>00862 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a7c45741ce126859776bb458ae16d9d05">u8g_DisableCom</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev);        <span class="comment">/* obsolete */</span>
<a name="l00863"></a>00863 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a0c34aac881e5e41b85c0fa41a47f0685">u8g_SetChipSelect</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t cs);
<a name="l00864"></a>00864 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a6c3640e87b4f87c787890ca4b2f477b0">u8g_SetResetLow</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev);
<a name="l00865"></a>00865 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a588ac7f192ccdb49f55d57ea227424a9">u8g_SetResetHigh</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev);
<a name="l00866"></a>00866 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#ad89fac2c682a837406a1b86e7d7c2073">u8g_SetAddress</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t address);
<a name="l00867"></a>00867 uint8_t <a class="code" href="u8glib__ex_8h.html#af12049f27935eec7a9b5930f1f0f84a3">u8g_WriteByte</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t val);
<a name="l00868"></a>00868 uint8_t <a class="code" href="u8glib__ex_8h.html#a1a25a189f85f6d89161d63a14da5f044">u8g_WriteSequence</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t cnt, uint8_t *seq);
<a name="l00869"></a>00869 uint8_t <a class="code" href="u8glib__ex_8h.html#af4883c97da1748abdf8ccc9c93f2501d">u8g_WriteSequenceP</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t cnt, <span class="keyword">const</span> uint8_t *seq);
<a name="l00870"></a>00870 
<a name="l00871"></a>00871 
<a name="l00872"></a>00872 
<a name="l00873"></a><a class="code" href="u8glib__ex_8h.html#ab21005f571adc78cec66b3d889f9e871">00873</a> <span class="preprocessor">#define U8G_ESC_DLY(x) 255, ((x) &amp; 0x7f)</span>
<a name="l00874"></a><a class="code" href="u8glib__ex_8h.html#ab44712ce2ec80eb205f1e3b8ba1f8f1a">00874</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_ESC_CS(x) 255, (0xd0 | ((x)&amp;0x0f))</span>
<a name="l00875"></a><a class="code" href="u8glib__ex_8h.html#a3294b2396ce0c13eb8bbe52f0e93cbe4">00875</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_ESC_ADR(x) 255, (0xe0 | ((x)&amp;0x0f))</span>
<a name="l00876"></a><a class="code" href="u8glib__ex_8h.html#aa7e73814dc839d642bdfc26bb425797e">00876</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_ESC_RST(x) 255, (0xc0 | ((x)&amp;0x0f))</span>
<a name="l00877"></a><a class="code" href="u8glib__ex_8h.html#a0f717ddd0c89c1ac0f7e5ccc750014b0">00877</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_ESC_VCC(x) 255, (0xbe | ((x)&amp;0x01))</span>
<a name="l00878"></a><a class="code" href="u8glib__ex_8h.html#a73a84b31415b6b731da3ca62f0e99a85">00878</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_ESC_END 255, 254</span>
<a name="l00879"></a><a class="code" href="u8glib__ex_8h.html#a1f6026d37b6dbf965bc6d98f194f00ea">00879</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_ESC_255 255, 255</span>
<a name="l00880"></a>00880 <span class="preprocessor"></span><span class="comment">//uint8_t u8g_WriteEscSeqP(u8g_t *u8g, u8g_dev_t *dev, u8g_pgm_uint8_t *esc_seq);</span>
<a name="l00881"></a>00881 uint8_t <a class="code" href="u8glib__ex_8h.html#ab0e35a2c1e15e3dc98f0637ce8129744">u8g_WriteEscSeqP</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, <span class="keyword">const</span> uint8_t *esc_seq);
<a name="l00882"></a>00882 
<a name="l00883"></a>00883 
<a name="l00884"></a>00884 <span class="comment">/* u8g_com_api_16gr.c */</span>
<a name="l00885"></a>00885 uint8_t <a class="code" href="u8glib__ex_8h.html#a0ff4443d618f738dd3c75737c1dd290a">u8g_WriteByteBWTo16GrDevice</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t b);
<a name="l00886"></a>00886 uint8_t <a class="code" href="u8glib__ex_8h.html#a20669ee52a637d0af22aabeb0a25c07f">u8g_WriteSequenceBWTo16GrDevice</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t cnt, uint8_t *ptr);
<a name="l00887"></a>00887 uint8_t <a class="code" href="u8glib__ex_8h.html#abaed0af8feeb77f86b6247cbe6845cfb">u8g_WriteByte4LTo16GrDevice</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t b);
<a name="l00888"></a>00888 uint8_t <a class="code" href="u8glib__ex_8h.html#a1e1cbfcabf4f4a34f964678c293b61d1">u8g_WriteSequence4LTo16GrDevice</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t cnt, uint8_t *ptr);
<a name="l00889"></a>00889 
<a name="l00890"></a>00890 
<a name="l00891"></a>00891 <span class="comment">/*===============================================================*/</span>
<a name="l00892"></a>00892 <span class="comment">/* u8g_arduino_common.c */</span>
<a name="l00893"></a>00893 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#ab23512398e22c34ec912a3f2bf86234d">u8g_com_arduino_digital_write</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t pin_index, uint8_t value);
<a name="l00894"></a>00894 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a4429917c6f548b28732dbc09d4c3eb08">u8g_com_arduino_assign_pin_output_high</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l00895"></a>00895 
<a name="l00896"></a>00896 <span class="comment">/*===============================================================*/</span>
<a name="l00897"></a>00897 <span class="comment">/* u8g_com_io.c */</span>
<a name="l00898"></a>00898 
<a name="l00899"></a>00899 <span class="comment">/* create internal number from port and pin */</span>
<a name="l00900"></a>00900 uint8_t <a class="code" href="u8glib__ex_8h.html#a1374215d0809272bbcb0880db1591f37">u8g_Pin</a>(uint8_t port, uint8_t bitpos);
<a name="l00901"></a><a class="code" href="u8glib__ex_8h.html#a4f1cfb825a6351c1495faad2a3f36d6b">00901</a> <span class="preprocessor">#define PN(port,bitpos) u8g_Pin(port,bitpos)</span>
<a name="l00902"></a>00902 <span class="preprocessor"></span>
<a name="l00903"></a>00903 <span class="comment">/* low level procedures */</span>
<a name="l00904"></a>00904 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#afd8b8d4e5a721b768238c2a457c22996">u8g_SetPinOutput</a>(uint8_t internal_pin_number);
<a name="l00905"></a>00905 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#aaae59f3c68a804cef806cf1a50387d9a">u8g_SetPinLevel</a>(uint8_t internal_pin_number, uint8_t level);
<a name="l00906"></a>00906 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a2d2fbe0290fe402b5a1528a0b3bcd26f">u8g_SetPinInput</a>(uint8_t internal_pin_number);
<a name="l00907"></a>00907 uint8_t <a class="code" href="u8glib__ex_8h.html#aaf949d4723afabcfe640915dc49dfccd">u8g_GetPinLevel</a>(uint8_t internal_pin_number);
<a name="l00908"></a>00908 
<a name="l00909"></a>00909 <span class="comment">/* u8g level procedures, expect U8G_PI_xxx macro */</span>
<a name="l00910"></a>00910 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#ab4d6e0d0d2c03b671af52f24436c65bd">u8g_SetPIOutput</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t pi);
<a name="l00911"></a>00911 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a468fe1e27ef26ec6780fa2e5b5159a72">u8g_SetPILevel</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t pi, uint8_t level);
<a name="l00912"></a>00912 
<a name="l00913"></a>00913 
<a name="l00914"></a>00914 <span class="comment">/*===============================================================*/</span>
<a name="l00915"></a>00915 <span class="comment">/* page */</span>
<a name="l00916"></a><a class="code" href="struct__u8g__page__t.html">00916</a> <span class="keyword">struct </span><a class="code" href="struct__u8g__page__t.html">_u8g_page_t</a>
<a name="l00917"></a>00917 {
<a name="l00918"></a><a class="code" href="struct__u8g__page__t.html#a0810d393e31b561104c34655919e0e1a">00918</a>   u8g_uint_t <a class="code" href="struct__u8g__page__t.html#a0810d393e31b561104c34655919e0e1a">page_height</a>;
<a name="l00919"></a><a class="code" href="struct__u8g__page__t.html#a64804ce3ac5cacbd32e9793e3fe63ec9">00919</a>   u8g_uint_t <a class="code" href="struct__u8g__page__t.html#a64804ce3ac5cacbd32e9793e3fe63ec9">total_height</a>;
<a name="l00920"></a><a class="code" href="struct__u8g__page__t.html#ad849a6c82137ac60b0a2bd19cbd21b5a">00920</a>   u8g_uint_t <a class="code" href="struct__u8g__page__t.html#ad849a6c82137ac60b0a2bd19cbd21b5a">page_y0</a>;
<a name="l00921"></a><a class="code" href="struct__u8g__page__t.html#ad80e065e972df7c230dccebf745006fb">00921</a>   u8g_uint_t <a class="code" href="struct__u8g__page__t.html#ad80e065e972df7c230dccebf745006fb">page_y1</a>;
<a name="l00922"></a><a class="code" href="struct__u8g__page__t.html#a2f83e9b107394d95fc3967db09e97d76">00922</a>   uint8_t <a class="code" href="struct__u8g__page__t.html#a2f83e9b107394d95fc3967db09e97d76">page</a>;
<a name="l00923"></a>00923 };
<a name="l00924"></a><a class="code" href="u8glib__ex_8h.html#a9d06db2320fbd98fd0a5faa572242a67">00924</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__u8g__page__t.html">_u8g_page_t</a> <a class="code" href="struct__u8g__page__t.html">u8g_page_t</a>;
<a name="l00925"></a>00925 
<a name="l00926"></a>00926 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a55151c99b93f1d585fb20fae91404e4d">u8g_page_First</a>(<a class="code" href="struct__u8g__page__t.html">u8g_page_t</a> *p) <a class="code" href="u8glib__ex_8h.html#a4bae67fd4823619e3aa810feaf68e93b">U8G_NOINLINE</a>;                                                                                        <span class="comment">/* u8g_page.c */</span>
<a name="l00927"></a>00927 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#aec06e309694a4a16620c6a9991ffb096">u8g_page_Init</a>(<a class="code" href="struct__u8g__page__t.html">u8g_page_t</a> *p, u8g_uint_t <a class="code" href="struct__u8g__page__t.html#a0810d393e31b561104c34655919e0e1a">page_height</a>, u8g_uint_t <a class="code" href="struct__u8g__page__t.html#a64804ce3ac5cacbd32e9793e3fe63ec9">total_height</a> ) <a class="code" href="u8glib__ex_8h.html#a4bae67fd4823619e3aa810feaf68e93b">U8G_NOINLINE</a>;            <span class="comment">/* u8g_page.c */</span>
<a name="l00928"></a>00928 uint8_t <a class="code" href="u8glib__ex_8h.html#a9e64e9aa126a52fbffccdb6b244b5a64">u8g_page_Next</a>(<a class="code" href="struct__u8g__page__t.html">u8g_page_t</a> *p) <a class="code" href="u8glib__ex_8h.html#a4bae67fd4823619e3aa810feaf68e93b">U8G_NOINLINE</a>;                                                                                   <span class="comment">/* u8g_page.c */</span>
<a name="l00929"></a>00929 
<a name="l00930"></a>00930 <span class="comment">/*===============================================================*/</span>
<a name="l00931"></a>00931 <span class="comment">/* page buffer (pb) */</span>
<a name="l00932"></a>00932 
<a name="l00933"></a><a class="code" href="struct__u8g__pb__t.html">00933</a> <span class="keyword">struct </span><a class="code" href="struct__u8g__pb__t.html">_u8g_pb_t</a>
<a name="l00934"></a>00934 {
<a name="l00935"></a><a class="code" href="struct__u8g__pb__t.html#ad86061e0a24796ae7c1752e6f25ecb97">00935</a>   <a class="code" href="struct__u8g__page__t.html">u8g_page_t</a> <a class="code" href="struct__u8g__pb__t.html#ad86061e0a24796ae7c1752e6f25ecb97">p</a>;
<a name="l00936"></a><a class="code" href="struct__u8g__pb__t.html#a12c3336a1bb53db20c777c05c17705b9">00936</a>   u8g_uint_t <a class="code" href="struct__u8g__pb__t.html#a12c3336a1bb53db20c777c05c17705b9">width</a>;             <span class="comment">/* pixel width */</span>
<a name="l00937"></a><a class="code" href="struct__u8g__pb__t.html#a5bc5fa69bee375df074734a2c4858604">00937</a>   <span class="keywordtype">void</span> *<a class="code" href="struct__u8g__pb__t.html#a5bc5fa69bee375df074734a2c4858604">buf</a>;
<a name="l00938"></a>00938 };
<a name="l00939"></a><a class="code" href="u8glib__ex_8h.html#a4177d08354b32b3ceb7c3beff4bf1811">00939</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__u8g__pb__t.html">_u8g_pb_t</a> <a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a>;
<a name="l00940"></a>00940 
<a name="l00941"></a>00941 
<a name="l00942"></a>00942 <span class="comment">/* u8g_pb.c */</span>
<a name="l00943"></a>00943 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a70f71de3c3bb7ba529e5b078350c9f9f">u8g_pb_Clear</a>(<a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> *b);
<a name="l00944"></a>00944 uint8_t <a class="code" href="u8glib__ex_8h.html#ab71ac82987eb642112cf773491f00e18">u8g_pb_IsYIntersection</a>(<a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> *pb, u8g_uint_t v0, u8g_uint_t v1);
<a name="l00945"></a>00945 uint8_t <a class="code" href="u8glib__ex_8h.html#ae97993f551b67113ea14d9bd3fb71125">u8g_pb_IsXIntersection</a>(<a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> *b, u8g_uint_t v0, u8g_uint_t v1);
<a name="l00946"></a>00946 uint8_t <a class="code" href="u8glib__ex_8h.html#a5eb965cf1a843aed9f521843218f5ff3">u8g_pb_IsIntersection</a>(<a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> *pb, <a class="code" href="struct__u8g__dev__arg__bbx__t.html">u8g_dev_arg_bbx_t</a> *bbx);
<a name="l00947"></a>00947 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#af7f4944e409dbdf5e094992336a899a8">u8g_pb_GetPageBox</a>(<a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> *pb, <a class="code" href="struct__u8g__box__t.html">u8g_box_t</a> *box);
<a name="l00948"></a>00948 uint8_t <a class="code" href="u8glib__ex_8h.html#ae8f5a2c3e48da2a02fab5206f81af74f">u8g_pb_Is8PixelVisible</a>(<a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> *b, <a class="code" href="struct__u8g__dev__arg__pixel__t.html">u8g_dev_arg_pixel_t</a> *arg_pixel);
<a name="l00949"></a>00949 uint8_t <a class="code" href="u8glib__ex_8h.html#a990b6e83983beb111503bef41d181d22">u8g_pb_WriteBuffer</a>(<a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> *b, <a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev);
<a name="l00950"></a>00950 
<a name="l00951"></a>00951 <span class="comment">/*</span>
<a name="l00952"></a>00952 <span class="comment">  note on __attribute__ ((nocommon))</span>
<a name="l00953"></a>00953 <span class="comment">    AVR scripts often use  --gc-sections on the linker to remove unused section.</span>
<a name="l00954"></a>00954 <span class="comment">    This works fine for initialed data and text sections. In principle .bss is also</span>
<a name="l00955"></a>00955 <span class="comment">    handled, but the name##_pb definition is not removed. Reason is, that</span>
<a name="l00956"></a>00956 <span class="comment">    array definitions are placed in the COMMON section, by default</span>
<a name="l00957"></a>00957 <span class="comment">    The attribute &quot;nocommon&quot; removes this automatic assignment to the</span>
<a name="l00958"></a>00958 <span class="comment">    COMMON section and directly puts it into .bss. As a result, if more</span>
<a name="l00959"></a>00959 <span class="comment">    than one buffer is defined in one file, then it will be removed with --gc-sections</span>
<a name="l00960"></a>00960 <span class="comment"></span>
<a name="l00961"></a>00961 <span class="comment">    .. not sure if Arduino IDE uses -fno-common... if yes, then the attribute is</span>
<a name="l00962"></a>00962 <span class="comment">    redundant.</span>
<a name="l00963"></a>00963 <span class="comment">*/</span>
<a name="l00964"></a><a class="code" href="u8glib__ex_8h.html#a3097d1fd21586277e836bc0d4f08e6a6">00964</a> <span class="preprocessor">#define U8G_PB_DEV(name, width, height, page_height, dev_fn, com_fn) \</span>
<a name="l00965"></a>00965 <span class="preprocessor">uint8_t name##_buf[width] U8G_NOCOMMON ; \</span>
<a name="l00966"></a>00966 <span class="preprocessor">u8g_pb_t name##_pb = { {page_height, height, 0, 0, 0},  width, name##_buf}; \</span>
<a name="l00967"></a>00967 <span class="preprocessor">u8g_dev_t name = { dev_fn, &amp;name##_pb, com_fn }</span>
<a name="l00968"></a>00968 <span class="preprocessor"></span>
<a name="l00969"></a>00969 
<a name="l00970"></a>00970 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a58673e62c077748bf459dd30ee918c44">u8g_pb8v1_Init</a>(<a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> *b, <span class="keywordtype">void</span> *<a class="code" href="struct__u8g__pb__t.html#a5bc5fa69bee375df074734a2c4858604">buf</a>, u8g_uint_t <a class="code" href="struct__u8g__pb__t.html#a12c3336a1bb53db20c777c05c17705b9">width</a>)   <a class="code" href="u8glib__ex_8h.html#a4bae67fd4823619e3aa810feaf68e93b">U8G_NOINLINE</a>;
<a name="l00971"></a>00971 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a4b6d99eae7b0d59e9c75929722a5c894">u8g_pb8v1_Clear</a>(<a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> *b) <a class="code" href="u8glib__ex_8h.html#a4bae67fd4823619e3aa810feaf68e93b">U8G_NOINLINE</a>;
<a name="l00972"></a>00972 
<a name="l00973"></a>00973 uint8_t <a class="code" href="u8glib__ex_8h.html#a11b0c75ff13339e69b1d2fcd2d19e7b5">u8g_pb8v1_IsYIntersection</a>(<a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> *b, u8g_uint_t v0, u8g_uint_t v1);
<a name="l00974"></a>00974 uint8_t <a class="code" href="u8glib__ex_8h.html#ac5535df05390625529a2f59f5e39f5d5">u8g_pb8v1_IsXIntersection</a>(<a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> *b, u8g_uint_t v0, u8g_uint_t v1);
<a name="l00975"></a>00975 uint8_t <a class="code" href="u8glib__ex_8h.html#a2a6d9002cd75b72c4196ef6a8aacabda">u8g_pb8v1_WriteBuffer</a>(<a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> *b, <a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev);
<a name="l00976"></a>00976 
<a name="l00977"></a>00977 uint8_t <a class="code" href="u8glib__ex_8h.html#a84d87b722cb3decc57203e05989aa16a">u8g_dev_pb8v1_base_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t msg, <span class="keywordtype">void</span> *arg);
<a name="l00978"></a>00978 
<a name="l00979"></a>00979 <span class="comment">/* u8g_pb16v1.c */</span>
<a name="l00980"></a>00980 uint8_t <a class="code" href="u8glib__ex_8h.html#a259379d5d14842d18a5eb00e70fe1d20">u8g_dev_pb16v1_base_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t msg, <span class="keywordtype">void</span> *arg);
<a name="l00981"></a>00981 
<a name="l00982"></a>00982 <span class="comment">/* u8g_pb14v1.c */</span>
<a name="l00983"></a>00983 uint8_t <a class="code" href="u8glib__ex_8h.html#afbd6693ec3aed16c1f3e1b5fe7976bdc">u8g_dev_pb14v1_base_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t msg, <span class="keywordtype">void</span> *arg);
<a name="l00984"></a>00984 
<a name="l00985"></a>00985 <span class="comment">/* u8g_pb8v2.c */</span>
<a name="l00986"></a>00986 uint8_t <a class="code" href="u8glib__ex_8h.html#a0e0e745b0db5075909e513e0a43db615">u8g_dev_pb8v2_base_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t msg, <span class="keywordtype">void</span> *arg);
<a name="l00987"></a>00987 
<a name="l00988"></a>00988 <span class="comment">/* u8g_pb16v2.c (double memory of pb8v2) */</span>
<a name="l00989"></a>00989 uint8_t <a class="code" href="u8glib__ex_8h.html#a3dd04f4e77cec5e3cda6ca4839407388">u8g_dev_pb16v2_base_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t msg, <span class="keywordtype">void</span> *arg);
<a name="l00990"></a>00990 
<a name="l00991"></a>00991 
<a name="l00992"></a>00992 <span class="comment">/* u8g_pb8h1.c */</span>
<a name="l00993"></a>00993 uint8_t <a class="code" href="u8glib__ex_8h.html#a49367556b38e77c7df14666d008513c1">u8g_dev_pb8h1_base_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t msg, <span class="keywordtype">void</span> *arg);
<a name="l00994"></a>00994 
<a name="l00995"></a>00995 <span class="comment">/* u8g_pb16h1.c */</span>
<a name="l00996"></a>00996 uint8_t <a class="code" href="u8glib__ex_8h.html#acefdc76e6516d96ef9cf3e9d41b379a6">u8g_dev_pb16h1_base_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t msg, <span class="keywordtype">void</span> *arg);
<a name="l00997"></a>00997 
<a name="l00998"></a>00998 <span class="comment">/* u8g_pb32h1.c */</span>
<a name="l00999"></a>00999 uint8_t <a class="code" href="u8glib__ex_8h.html#ab6ca73b1e3fddbe6ba2aa7984d9cf54a">u8g_dev_pb32h1_base_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t msg, <span class="keywordtype">void</span> *arg);
<a name="l01000"></a>01000 
<a name="l01001"></a>01001 
<a name="l01002"></a>01002 <span class="comment">/* u8g_pb8h2.c 8 pixel rows, byte has horzontal orientation */</span>
<a name="l01003"></a>01003 uint8_t <a class="code" href="u8glib__ex_8h.html#abc6d36a81d67f4b412fd69c2b3531f17">u8g_dev_pb8h2_base_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t msg, <span class="keywordtype">void</span> *arg);
<a name="l01004"></a>01004 
<a name="l01005"></a>01005 <span class="comment">/* u8g_pb16h2.c */</span>
<a name="l01006"></a>01006 uint8_t <a class="code" href="u8glib__ex_8h.html#a3235b2658ccf7bf77de6c96eacf5c59d">u8g_dev_pb16h2_base_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t msg, <span class="keywordtype">void</span> *arg);
<a name="l01007"></a>01007 
<a name="l01008"></a>01008 
<a name="l01009"></a>01009 
<a name="l01010"></a>01010 <span class="comment">/* u8g_pb8h1f.c */</span>
<a name="l01011"></a>01011 uint8_t <a class="code" href="u8glib__ex_8h.html#aa282ef3314598a0ee251d4d17b14cf70">u8g_dev_pb8h1f_base_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t msg, <span class="keywordtype">void</span> *arg);
<a name="l01012"></a>01012 
<a name="l01013"></a>01013 <span class="comment">/* u8g_pb8h8.c */</span>
<a name="l01014"></a>01014 uint8_t <a class="code" href="u8glib__ex_8h.html#af83d27ef03c7014a25526e0a79a25d2c">u8g_dev_pb8h8_base_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t msg, <span class="keywordtype">void</span> *arg);
<a name="l01015"></a>01015 
<a name="l01016"></a>01016 <span class="comment">/* u8g_pbxh16.c */</span>
<a name="l01017"></a>01017 uint8_t <a class="code" href="u8glib__ex_8h.html#a6e9ef4a04c1d2aac14987ac506882761">u8g_dev_pbxh16_base_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t msg, <span class="keywordtype">void</span> *arg);
<a name="l01018"></a>01018 
<a name="l01019"></a>01019 <span class="comment">/* u8g_pbxh24.c */</span>
<a name="l01020"></a>01020 uint8_t <a class="code" href="u8glib__ex_8h.html#a95097ab795178f213576aefdb35ee7fa">u8g_dev_pbxh24_base_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t msg, <span class="keywordtype">void</span> *arg);
<a name="l01021"></a>01021 
<a name="l01022"></a>01022 
<a name="l01023"></a>01023 <span class="comment">/*===============================================================*/</span>
<a name="l01024"></a>01024 <span class="comment">/* u8g_ll_api.c */</span>
<a name="l01025"></a>01025 
<a name="l01026"></a>01026 <span class="comment">/* cursor draw callback */</span>
<a name="l01027"></a><a class="code" href="u8glib__ex_8h.html#af8ea0e7393123d837fdcadf76c000518">01027</a> <span class="keyword">typedef</span> void (*<a class="code" href="u8glib__ex_8h.html#af8ea0e7393123d837fdcadf76c000518">u8g_draw_cursor_fn</a>)(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01028"></a>01028 
<a name="l01029"></a>01029 <span class="comment">/* vertical reference point calculation callback */</span>
<a name="l01030"></a><a class="code" href="u8glib__ex_8h.html#aa075a0ee6cfc624848bad7583a453c96">01030</a> <span class="keyword">typedef</span> <a class="code" href="u8glib__ex_8h.html#ab19091723595feb35a099cbd56b7cbb6">u8g_uint_t</a> (*<a class="code" href="u8glib__ex_8h.html#aa075a0ee6cfc624848bad7583a453c96">u8g_font_calc_vref_fnptr</a>)(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01031"></a>01031 
<a name="l01032"></a>01032 <span class="comment">/* state backup and restore procedure */</span>
<a name="l01033"></a><a class="code" href="u8glib__ex_8h.html#a6154f06b2cd313f4556ce76843acc4c6">01033</a> <span class="keyword">typedef</span> void (*<a class="code" href="u8glib__ex_8h.html#a6154f06b2cd313f4556ce76843acc4c6">u8g_state_cb</a>)(uint8_t msg);
<a name="l01034"></a>01034 
<a name="l01035"></a>01035 
<a name="l01036"></a>01036 <span class="comment">/* PI = Pin Index */</span>
<a name="l01037"></a>01037 
<a name="l01038"></a>01038 <span class="comment">/* reset pin, usually optional */</span>
<a name="l01039"></a><a class="code" href="u8glib__ex_8h.html#ac45f46016ed7f6fbd43ec109db4b14f6">01039</a> <span class="preprocessor">#define U8G_PI_RESET 0</span>
<a name="l01040"></a>01040 <span class="preprocessor"></span>
<a name="l01041"></a>01041 <span class="comment">/* address / data or instruction */</span>
<a name="l01042"></a><a class="code" href="u8glib__ex_8h.html#aa75b803d9105b2daf2fd419769510106">01042</a> <span class="preprocessor">#define U8G_PI_A0 1</span>
<a name="l01043"></a><a class="code" href="u8glib__ex_8h.html#a8419eb8938d539c6a2c5c159ddcfcdf6">01043</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_PI_DI 1</span>
<a name="l01044"></a>01044 <span class="preprocessor"></span>
<a name="l01045"></a>01045 <span class="comment">/* chip select line */</span>
<a name="l01046"></a><a class="code" href="u8glib__ex_8h.html#a4fa6b381ad482e6c679f73388c28a1d3">01046</a> <span class="preprocessor">#define U8G_PI_CS 2</span>
<a name="l01047"></a><a class="code" href="u8glib__ex_8h.html#ada1bfd73b486da044cdd2e938c374fe9">01047</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_PI_CS1 2</span>
<a name="l01048"></a><a class="code" href="u8glib__ex_8h.html#a945f039d57ab4a5d1dac557b520a9b38">01048</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_PI_CS2 3</span>
<a name="l01049"></a>01049 <span class="preprocessor"></span><span class="comment">/* Feb 2013: A0 state moved from 7 to 3 for t6963 controller*/</span>
<a name="l01050"></a><a class="code" href="u8glib__ex_8h.html#a7d70a99410516bad7b6c3c6d1a9e45e6">01050</a> <span class="preprocessor">#define U8G_PI_A0_STATE 3</span>
<a name="l01051"></a>01051 <span class="preprocessor"></span>
<a name="l01052"></a>01052 <span class="comment">/* enable / clock signal */</span>
<a name="l01053"></a><a class="code" href="u8glib__ex_8h.html#a83987241e1d1bfaa7c968ad299ab761c">01053</a> <span class="preprocessor">#define U8G_PI_EN 4</span>
<a name="l01054"></a><a class="code" href="u8glib__ex_8h.html#a9c0eb38d9a9de1c632eedca87a944311">01054</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_PI_CS_STATE 4</span>
<a name="l01055"></a><a class="code" href="u8glib__ex_8h.html#a204d15080393ba561cf64aea48892c9c">01055</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_PI_SCK 4</span>
<a name="l01056"></a><a class="code" href="u8glib__ex_8h.html#afe20e51a81debcf8a5165c2b277d4b5b">01056</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_PI_SCL 4</span>
<a name="l01057"></a><a class="code" href="u8glib__ex_8h.html#a6d1b5c9b48e159e2f76255e37b205fb7">01057</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_PI_RD 4</span>
<a name="l01058"></a>01058 <span class="preprocessor"></span>
<a name="l01059"></a>01059 
<a name="l01060"></a>01060 <span class="comment">/* data pins, shared with SPI and I2C pins */</span>
<a name="l01061"></a><a class="code" href="u8glib__ex_8h.html#affd361df756c956b68643a66207afbe1">01061</a> <span class="preprocessor">#define U8G_PI_D0 5</span>
<a name="l01062"></a><a class="code" href="u8glib__ex_8h.html#ac2fece13a6875b4bb4c040c3f6f6cded">01062</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_PI_MOSI 5</span>
<a name="l01063"></a><a class="code" href="u8glib__ex_8h.html#ae2977e5adcddc78dd94f882e0e23ec14">01063</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_PI_SDA 5</span>
<a name="l01064"></a><a class="code" href="u8glib__ex_8h.html#af00a114a70bec42e327ac94881311f46">01064</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_PI_D1 6</span>
<a name="l01065"></a><a class="code" href="u8glib__ex_8h.html#a923b1b089e3010fdda1e2b30013f729c">01065</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_PI_MISO 6</span>
<a name="l01066"></a><a class="code" href="u8glib__ex_8h.html#a12b352d2c82918e49d64d8617037e7bd">01066</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_PI_D2 7</span>
<a name="l01067"></a><a class="code" href="u8glib__ex_8h.html#a9df489412cad4918687943a4457cb2a9">01067</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_PI_D3 8</span>
<a name="l01068"></a><a class="code" href="u8glib__ex_8h.html#ada2a8ceed13d59000ebd19ccbc3ed170">01068</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_PI_SET_A0 8</span>
<a name="l01069"></a><a class="code" href="u8glib__ex_8h.html#ac181d93982d3d339d3bc6ca1b7eb96ce">01069</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_PI_D4 9</span>
<a name="l01070"></a><a class="code" href="u8glib__ex_8h.html#a9bee65d8f371f1140e2d2c79af728e3f">01070</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_PI_D5 10</span>
<a name="l01071"></a><a class="code" href="u8glib__ex_8h.html#a853bf5044e36493ed8aed38e7db83228">01071</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_PI_I2C_OPTION 11</span>
<a name="l01072"></a><a class="code" href="u8glib__ex_8h.html#a1f828caefd1e5e0150f883585209ea29">01072</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_PI_D6 11</span>
<a name="l01073"></a><a class="code" href="u8glib__ex_8h.html#a23182556b0cf6f9a271563930f340e22">01073</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_PI_D7 12</span>
<a name="l01074"></a>01074 <span class="preprocessor"></span>
<a name="l01075"></a>01075 <span class="comment">/* read/write pin, must be the last pin in the list, this means U8G_PIN_LIST_LEN =  U8G_PI_RW + 1*/</span>
<a name="l01076"></a><a class="code" href="u8glib__ex_8h.html#a7e3a774e3f532ab4aa57d7078e10c54c">01076</a> <span class="preprocessor">#define U8G_PI_WR 13</span>
<a name="l01077"></a><a class="code" href="u8glib__ex_8h.html#aa51c622ce539d06553291e65dfbfa6b8">01077</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_PI_RW 13</span>
<a name="l01078"></a>01078 <span class="preprocessor"></span>
<a name="l01079"></a><a class="code" href="u8glib__ex_8h.html#a69ec203b2b752cafbf4abfb8eae3e2dc">01079</a> <span class="preprocessor">#define U8G_PIN_LIST_LEN 14</span>
<a name="l01080"></a>01080 <span class="preprocessor"></span>
<a name="l01081"></a>01081 
<a name="l01082"></a><a class="code" href="u8glib__ex_8h.html#a05a8d0cff78bc973347421ffa1ba212d">01082</a> <span class="preprocessor">#define U8G_PIN_DUMMY 254</span>
<a name="l01083"></a><a class="code" href="u8glib__ex_8h.html#a95eb8a56571912e17c5f40da8a068c33">01083</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_PIN_NONE 255</span>
<a name="l01084"></a>01084 <span class="preprocessor"></span>
<a name="l01085"></a><a class="code" href="u8glib__ex_8h.html#a36fc06ce0f1172c052c16c3b03c3d997">01085</a> <span class="preprocessor">#define U8G_FONT_HEIGHT_MODE_TEXT 0</span>
<a name="l01086"></a><a class="code" href="u8glib__ex_8h.html#ac522a3ea75701a6ce493406ceb00340a">01086</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_FONT_HEIGHT_MODE_XTEXT 1</span>
<a name="l01087"></a><a class="code" href="u8glib__ex_8h.html#af417342da60f853ca5e336d9ff618f38">01087</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_FONT_HEIGHT_MODE_ALL 2</span>
<a name="l01088"></a>01088 <span class="preprocessor"></span>
<a name="l01089"></a><a class="code" href="struct__u8g__t.html">01089</a> <span class="keyword">struct </span><a class="code" href="struct__u8g__t.html">_u8g_t</a>
<a name="l01090"></a>01090 {
<a name="l01091"></a><a class="code" href="struct__u8g__t.html#a12c3336a1bb53db20c777c05c17705b9">01091</a>   u8g_uint_t <a class="code" href="struct__u8g__t.html#a12c3336a1bb53db20c777c05c17705b9">width</a>;
<a name="l01092"></a><a class="code" href="struct__u8g__t.html#a032e2d23ff5f2b6d23763bfe1ad4951d">01092</a>   u8g_uint_t <a class="code" href="struct__u8g__t.html#a032e2d23ff5f2b6d23763bfe1ad4951d">height</a>;
<a name="l01093"></a>01093 
<a name="l01094"></a>01094 
<a name="l01095"></a><a class="code" href="struct__u8g__t.html#a84ad9a754cb8aceb1d79c4c2bbbbc9ee">01095</a>   <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *<a class="code" href="struct__u8g__t.html#a84ad9a754cb8aceb1d79c4c2bbbbc9ee">dev</a>;               <span class="comment">/* first device in the device chain */</span>
<a name="l01096"></a><a class="code" href="struct__u8g__t.html#a098e0a80024577b9bb8644bd1fcc2aeb">01096</a>   <span class="keyword">const</span> u8g_pgm_uint8_t *<a class="code" href="struct__u8g__t.html#a098e0a80024577b9bb8644bd1fcc2aeb">font</a>;             <span class="comment">/* regular font for all text procedures */</span>
<a name="l01097"></a><a class="code" href="struct__u8g__t.html#a7faf6471398246725292038cbfed59d3">01097</a>   <span class="keyword">const</span> u8g_pgm_uint8_t *<a class="code" href="struct__u8g__t.html#a7faf6471398246725292038cbfed59d3">cursor_font</a>;  <span class="comment">/* special font for cursor procedures */</span>
<a name="l01098"></a><a class="code" href="struct__u8g__t.html#a23ccc376a84879d472613520e36358e0">01098</a>   uint8_t <a class="code" href="struct__u8g__t.html#a23ccc376a84879d472613520e36358e0">cursor_fg_color</a>, <a class="code" href="struct__u8g__t.html#a17964be547f89c75c80f842f2d26339f">cursor_bg_color</a>;
<a name="l01099"></a><a class="code" href="struct__u8g__t.html#af3de94536a3b3be064b2fef9d62cc846">01099</a>   uint8_t <a class="code" href="struct__u8g__t.html#af3de94536a3b3be064b2fef9d62cc846">cursor_encoding</a>;
<a name="l01100"></a><a class="code" href="struct__u8g__t.html#a37e90f5e3bd99fac2021fb3a326607d4">01100</a>   uint8_t <a class="code" href="struct__u8g__t.html#a37e90f5e3bd99fac2021fb3a326607d4">mode</a>;                         <span class="comment">/* display mode, one of U8G_MODE_xxx */</span>
<a name="l01101"></a><a class="code" href="struct__u8g__t.html#a8e7864d2032f0ac07d423bac246f1b1f">01101</a>   u8g_uint_t <a class="code" href="struct__u8g__t.html#a8e7864d2032f0ac07d423bac246f1b1f">cursor_x</a>;
<a name="l01102"></a><a class="code" href="struct__u8g__t.html#ab7eb90de366c894b2742b6e2f75b612b">01102</a>   u8g_uint_t <a class="code" href="struct__u8g__t.html#ab7eb90de366c894b2742b6e2f75b612b">cursor_y</a>;
<a name="l01103"></a><a class="code" href="struct__u8g__t.html#a09e15890b91ffc2c929ee2ef5af11461">01103</a>   <a class="code" href="u8glib__ex_8h.html#af8ea0e7393123d837fdcadf76c000518">u8g_draw_cursor_fn</a> <a class="code" href="struct__u8g__t.html#a09e15890b91ffc2c929ee2ef5af11461">cursor_fn</a>;
<a name="l01104"></a>01104 
<a name="l01105"></a><a class="code" href="struct__u8g__t.html#a0047ff5ea98551bea150fb5c60f6a5ef">01105</a>   int8_t <a class="code" href="struct__u8g__t.html#a0047ff5ea98551bea150fb5c60f6a5ef">glyph_dx</a>;
<a name="l01106"></a><a class="code" href="struct__u8g__t.html#a3bb3244ddc11d85c868e430e257a0ed8">01106</a>   int8_t <a class="code" href="struct__u8g__t.html#a3bb3244ddc11d85c868e430e257a0ed8">glyph_x</a>;
<a name="l01107"></a><a class="code" href="struct__u8g__t.html#adedc940cd2a0a208f0ae275953228b53">01107</a>   int8_t <a class="code" href="struct__u8g__t.html#adedc940cd2a0a208f0ae275953228b53">glyph_y</a>;
<a name="l01108"></a><a class="code" href="struct__u8g__t.html#a46729652917f79624a7d0509f5236a08">01108</a>   uint8_t <a class="code" href="struct__u8g__t.html#a46729652917f79624a7d0509f5236a08">glyph_width</a>;
<a name="l01109"></a><a class="code" href="struct__u8g__t.html#a5ceb900871cf8b7c88050f2cbc3a09e0">01109</a>   uint8_t <a class="code" href="struct__u8g__t.html#a5ceb900871cf8b7c88050f2cbc3a09e0">glyph_height</a>;
<a name="l01110"></a>01110 
<a name="l01111"></a><a class="code" href="struct__u8g__t.html#a6be898df5b515d31b02d56adab72cfef">01111</a>   <a class="code" href="u8glib__ex_8h.html#aa075a0ee6cfc624848bad7583a453c96">u8g_font_calc_vref_fnptr</a> <a class="code" href="struct__u8g__t.html#a6be898df5b515d31b02d56adab72cfef">font_calc_vref</a>;
<a name="l01112"></a><a class="code" href="struct__u8g__t.html#a0902d0294e5df68673e5e8730295498c">01112</a>   uint8_t <a class="code" href="struct__u8g__t.html#a0902d0294e5df68673e5e8730295498c">font_height_mode</a>;
<a name="l01113"></a><a class="code" href="struct__u8g__t.html#aa9cedcf19ccaafed19410935c5558631">01113</a>   int8_t <a class="code" href="struct__u8g__t.html#aa9cedcf19ccaafed19410935c5558631">font_ref_ascent</a>;
<a name="l01114"></a><a class="code" href="struct__u8g__t.html#a207e0565daf3a164bdb7391c9a78d5df">01114</a>   int8_t <a class="code" href="struct__u8g__t.html#a207e0565daf3a164bdb7391c9a78d5df">font_ref_descent</a>;
<a name="l01115"></a><a class="code" href="struct__u8g__t.html#af5ae7d612e35acaf1fda5e51defcf273">01115</a>   uint8_t <a class="code" href="struct__u8g__t.html#af5ae7d612e35acaf1fda5e51defcf273">font_line_spacing_factor</a>;     <span class="comment">/* line_spacing = factor * (ascent - descent) / 64 */</span>
<a name="l01116"></a><a class="code" href="struct__u8g__t.html#a8cdcc1f0ede6015f8099c063cdd6bf40">01116</a>   uint8_t <a class="code" href="struct__u8g__t.html#a8cdcc1f0ede6015f8099c063cdd6bf40">line_spacing</a>;
<a name="l01117"></a>01117 
<a name="l01118"></a><a class="code" href="struct__u8g__t.html#adea2457d691fd14b5f647aeedeef955b">01118</a>   <a class="code" href="struct__u8g__dev__arg__pixel__t.html">u8g_dev_arg_pixel_t</a> <a class="code" href="struct__u8g__t.html#adea2457d691fd14b5f647aeedeef955b">arg_pixel</a>;
<a name="l01119"></a>01119   <span class="comment">/* uint8_t color_index; */</span>
<a name="l01120"></a>01120 
<a name="l01121"></a>01121 <span class="preprocessor">#ifdef U8G_WITH_PINLIST</span>
<a name="l01122"></a>01122 <span class="preprocessor"></span>  uint8_t pin_list[<a class="code" href="u8glib__ex_8h.html#a69ec203b2b752cafbf4abfb8eae3e2dc">U8G_PIN_LIST_LEN</a>];
<a name="l01123"></a>01123 <span class="preprocessor">#endif</span>
<a name="l01124"></a>01124 <span class="preprocessor"></span>
<a name="l01125"></a><a class="code" href="struct__u8g__t.html#a9d000643a29eef68417259ea4aa24aef">01125</a>   <a class="code" href="u8glib__ex_8h.html#a6154f06b2cd313f4556ce76843acc4c6">u8g_state_cb</a> <a class="code" href="struct__u8g__t.html#a9d000643a29eef68417259ea4aa24aef">state_cb</a>;
<a name="l01126"></a>01126 
<a name="l01127"></a><a class="code" href="struct__u8g__t.html#a894ed7c2dd9e859af28bc0c25f673fae">01127</a>   <a class="code" href="struct__u8g__box__t.html">u8g_box_t</a> <a class="code" href="struct__u8g__t.html#a894ed7c2dd9e859af28bc0c25f673fae">current_page</a>;               <span class="comment">/* current box of the visible page */</span>
<a name="l01128"></a>01128 
<a name="l01129"></a>01129 };
<a name="l01130"></a>01130 
<a name="l01131"></a><a class="code" href="u8glib__ex_8h.html#a4ee3c783092b6b1d95278b5425e142c5">01131</a> <span class="preprocessor">#define u8g_GetFontAscent(u8g) ((u8g)-&gt;font_ref_ascent)</span>
<a name="l01132"></a><a class="code" href="u8glib__ex_8h.html#a81fff8d3436a28da7299abefef96696a">01132</a> <span class="preprocessor"></span><span class="preprocessor">#define u8g_GetFontDescent(u8g) ((u8g)-&gt;font_ref_descent)</span>
<a name="l01133"></a><a class="code" href="u8glib__ex_8h.html#a0e2606ee930336963a14d446422e4757">01133</a> <span class="preprocessor"></span><span class="preprocessor">#define u8g_GetFontLineSpacing(u8g) ((u8g)-&gt;line_spacing)</span>
<a name="l01134"></a>01134 <span class="preprocessor"></span>
<a name="l01135"></a>01135 uint8_t <a class="code" href="u8glib__ex_8h.html#ab0c0fd456482ffff05956cbadbe80ddf">u8g_call_dev_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t msg, <span class="keywordtype">void</span> *arg);
<a name="l01136"></a>01136 
<a name="l01137"></a>01137 uint8_t <a class="code" href="u8glib__ex_8h.html#a4bd1fea68c63ba10b95c4791a47df667">u8g_InitLL</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev);
<a name="l01138"></a>01138 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#ad1bed8da32d3147c81b3ffc03676f77b">u8g_FirstPageLL</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev);
<a name="l01139"></a>01139 uint8_t <a class="code" href="u8glib__ex_8h.html#a20550f4e2aabb9ac427c4997c94c5783">u8g_NextPageLL</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev);
<a name="l01140"></a>01140 uint8_t <a class="code" href="u8glib__ex_8h.html#ad6f2bcb2bd216ccabc35f72a64625294">u8g_SetContrastLL</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t contrast);
<a name="l01141"></a>01141 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#adae0bf770f21ccdc411e8eb48109f873">u8g_DrawPixelLL</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, u8g_uint_t x, u8g_uint_t y);
<a name="l01142"></a>01142 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#abeb307b1a4fe97b24679e9330eb2f841">u8g_Draw8PixelLL</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel);
<a name="l01143"></a>01143 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a6a43acba15120a8dcae6292c563b88ee">u8g_Draw4TPixelLL</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel);
<a name="l01144"></a>01144 uint8_t <a class="code" href="u8glib__ex_8h.html#ab23d6dee11a4debd09bbdfa73e7bd927">u8g_IsBBXIntersectionLL</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h);    <span class="comment">/* obsolete */</span>
<a name="l01145"></a>01145 u8g_uint_t <a class="code" href="u8glib__ex_8h.html#a305b71b05558c5edaaaa7572b6bb4d61">u8g_GetWidthLL</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev);
<a name="l01146"></a>01146 u8g_uint_t <a class="code" href="u8glib__ex_8h.html#ad300bdf302e2b1e8179da1e18b8e2917">u8g_GetHeightLL</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev);
<a name="l01147"></a>01147 
<a name="l01148"></a>01148 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#ad458f824f71183b72ad9fbf311e54fca">u8g_UpdateDimension</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01149"></a>01149 uint8_t <a class="code" href="u8glib__ex_8h.html#a926b1f3bb30fbdea20ff1195607101dd">u8g_Begin</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);                          <span class="comment">/* reset device, put it into default state and call u8g_UpdateDimension() */</span>
<a name="l01150"></a>01150 uint8_t <a class="code" href="u8glib__ex_8h.html#a7c8d1380a5634ca3d8b1fb22f969aaca">u8g_Init</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev);   <span class="comment">/* only usefull if the device only as hardcoded ports */</span>
<a name="l01151"></a>01151 uint8_t <a class="code" href="u8glib__ex_8h.html#a831dba41f473da54a23e0122fb93a64d">u8g_InitComFn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, <a class="code" href="u8glib__ex_8h.html#ae5fda0c9749774cf2dd40cb40c4e5f14">u8g_com_fnptr</a> com_fn);        <span class="comment">/* Init procedure for anything which is not Arduino or AVR (e.g. ARM, but not Due, which is Arduino) */</span>
<a name="l01152"></a>01152 uint8_t <a class="code" href="u8glib__ex_8h.html#aa72a04654251f8627ad695b1d9a4af8c">u8g_InitSPI</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset);
<a name="l01153"></a>01153 uint8_t <a class="code" href="u8glib__ex_8h.html#a0f958db8a9a485742decff1b703bf908">u8g_InitHWSPI</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t cs, uint8_t a0, uint8_t reset);
<a name="l01154"></a>01154 uint8_t <a class="code" href="u8glib__ex_8h.html#aa2e9cfcb1e5f754ed0bc458ab2c9da76">u8g_InitI2C</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t options);       <span class="comment">/* use U8G_I2C_OPT_NONE as options */</span>
<a name="l01155"></a>01155 uint8_t <a class="code" href="u8glib__ex_8h.html#a909f67b86d83adfc47892f7d6f7c91f2">u8g_Init8BitFixedPort</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t en, uint8_t cs, uint8_t di, uint8_t rw, uint8_t reset);
<a name="l01156"></a>01156 uint8_t <a class="code" href="u8glib__ex_8h.html#a79c872dcc3b7248cf85b2d7f8fc1d7a5">u8g_Init8Bit</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7,
<a name="l01157"></a>01157   uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw, uint8_t reset);
<a name="l01158"></a>01158 uint8_t <a class="code" href="u8glib__ex_8h.html#a50610cc290652114cac33345ae5e8b71">u8g_InitRW8Bit</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7,
<a name="l01159"></a>01159   uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset);
<a name="l01160"></a>01160 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#aa54637a626ad50ec0f077e497cd3a155">u8g_FirstPage</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01161"></a>01161 uint8_t <a class="code" href="u8glib__ex_8h.html#a0205f91bc51532741a65c5bbe1bfacf5">u8g_NextPage</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01162"></a>01162 uint8_t <a class="code" href="u8glib__ex_8h.html#a004775899e0b7d861ac4b54fe7778828">u8g_SetContrast</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t contrast);
<a name="l01163"></a>01163 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a5d66e114a3b56f37cf21abeba8ec328d">u8g_SleepOn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01164"></a>01164 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#ac3893c55b894e7c2cc7da18095416924">u8g_SleepOff</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01165"></a>01165 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a8dc841c0eff99d60b40f01c3b48e626f">u8g_DrawPixel</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y);
<a name="l01166"></a>01166 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a541bde03a368db9b3bd043ce96100133">u8g_Draw8Pixel</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel);
<a name="l01167"></a>01167 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a6b07af91d256375473e016f49f01b844">u8g_Draw4TPixel</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel);
<a name="l01168"></a>01168 
<a name="l01169"></a>01169 uint8_t <a class="code" href="u8glib__ex_8h.html#aa6ec484915e5cf507e59efa01754cd1d">u8g_Stop</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01170"></a>01170 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a89173ab79781eeedeec8eb4a04669e4b">u8g_SetColorEntry</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t idx, uint8_t r, uint8_t g, uint8_t b);
<a name="l01171"></a>01171 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#aefd0ab5f91aba8c61244029339961aeb">u8g_SetColorIndex</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t idx);
<a name="l01172"></a>01172 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a83cdbb6f0b07115af60562b42c9cb38d">u8g_SetHiColor</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint16_t rgb);
<a name="l01173"></a>01173 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a812a2497f35f1a91019c2265145455da">u8g_SetHiColorByRGB</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t r, uint8_t g, uint8_t b);
<a name="l01174"></a>01174 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#ab97704290c02cada186f1332cbcd0701">u8g_SetRGB</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t r, uint8_t g, uint8_t b);
<a name="l01175"></a>01175 uint8_t <a class="code" href="u8glib__ex_8h.html#a6aadefad11e0afaf2073c4dd23359e62">u8g_GetColorIndex</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01176"></a>01176 
<a name="l01177"></a>01177 uint8_t <a class="code" href="u8glib__ex_8h.html#a096dff3c0f55a490de25ef00414df635">u8g_GetDefaultForegroundColor</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01178"></a>01178 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a8630e1de18dc8540f7ef23912e1f3eff">u8g_SetDefaultForegroundColor</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01179"></a>01179 
<a name="l01180"></a>01180 uint8_t <a class="code" href="u8glib__ex_8h.html#a503df9fe142f0b0fa3957ce6dfdaf129">u8g_GetDefaultBackgroundColor</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01181"></a>01181 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a8ebf21f5b7876ffcd6ff534d0af6d2fb">u8g_SetDefaultBackgroundColor</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01182"></a>01182 
<a name="l01183"></a>01183 uint8_t <a class="code" href="u8glib__ex_8h.html#a8bd860cbd1d7e1dc214d690ded92bf24">u8g_GetDefaultMidColor</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01184"></a>01184 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a5ff155c33ac11f990edd9743e4ff4ca9">u8g_SetDefaultMidColor</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01185"></a>01185 
<a name="l01186"></a><a class="code" href="u8glib__ex_8h.html#a01682a5ed22ed04756a8006c9f789c1f">01186</a> <span class="preprocessor">#define u8g_GetWidth(u8g) ((u8g)-&gt;width)</span>
<a name="l01187"></a><a class="code" href="u8glib__ex_8h.html#a4fb84415cbf39fbc2d09528a22dcd97f">01187</a> <span class="preprocessor"></span><span class="preprocessor">#define u8g_GetHeight(u8g) ((u8g)-&gt;height)</span>
<a name="l01188"></a><a class="code" href="u8glib__ex_8h.html#aec0760c8d15ede75f043468ce888d0e6">01188</a> <span class="preprocessor"></span><span class="preprocessor">#define u8g_GetMode(u8g) ((u8g)-&gt;mode)</span>
<a name="l01189"></a>01189 <span class="preprocessor"></span><span class="comment">/*</span>
<a name="l01190"></a>01190 <span class="comment">  U8G_MODE_GET_BITS_PER_PIXEL(u8g_GetMode(u8g))</span>
<a name="l01191"></a>01191 <span class="comment">  U8G_MODE_IS_COLOR(u8g_GetMode(u8g))</span>
<a name="l01192"></a>01192 <span class="comment">*/</span>
<a name="l01193"></a>01193 
<a name="l01194"></a>01194 <span class="comment">/* u8g_state.c */</span>
<a name="l01195"></a><a class="code" href="u8glib__ex_8h.html#a509a942dc22ab63840437f01a2faa674">01195</a> <span class="preprocessor">#define U8G_STATE_ENV_IDX 0</span>
<a name="l01196"></a><a class="code" href="u8glib__ex_8h.html#a277bbb4be2a6602b92570dc6aed6a854">01196</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_STATE_U8G_IDX 1</span>
<a name="l01197"></a><a class="code" href="u8glib__ex_8h.html#add6cacb3819c030c0c03796c3c077b2f">01197</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_STATE_RESTORE 0</span>
<a name="l01198"></a><a class="code" href="u8glib__ex_8h.html#a8f9795566941892ee0410d17c7c628d1">01198</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_STATE_BACKUP 1</span>
<a name="l01199"></a><a class="code" href="u8glib__ex_8h.html#a745c1f91c63ad053fba3d4a3d7dcdcf7">01199</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_STATE_MSG_COMPOSE(cmd,idx) (((cmd)&lt;&lt;1) | (idx))</span>
<a name="l01200"></a>01200 <span class="preprocessor"></span>
<a name="l01201"></a><a class="code" href="u8glib__ex_8h.html#a49bf1a504de0c8bebfbdb2b115bc4b75">01201</a> <span class="preprocessor">#define U8G_STATE_MSG_RESTORE_ENV U8G_STATE_MSG_COMPOSE(U8G_STATE_RESTORE,U8G_STATE_ENV_IDX)</span>
<a name="l01202"></a><a class="code" href="u8glib__ex_8h.html#aae53c096aba069e78b3a8baaf7d86cbe">01202</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_STATE_MSG_BACKUP_ENV U8G_STATE_MSG_COMPOSE(U8G_STATE_BACKUP,U8G_STATE_ENV_IDX)</span>
<a name="l01203"></a><a class="code" href="u8glib__ex_8h.html#a4f1a8a59ef88f8235f8b8a95448321aa">01203</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_STATE_MSG_RESTORE_U8G U8G_STATE_MSG_COMPOSE(U8G_STATE_RESTORE,U8G_STATE_U8G_IDX)</span>
<a name="l01204"></a><a class="code" href="u8glib__ex_8h.html#aa83792d253ddacb1b51825e110903316">01204</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_STATE_MSG_BACKUP_U8G U8G_STATE_MSG_COMPOSE(U8G_STATE_BACKUP,U8G_STATE_U8G_IDX)</span>
<a name="l01205"></a>01205 <span class="preprocessor"></span>
<a name="l01206"></a><a class="code" href="u8glib__ex_8h.html#ad0a56274c4cf978d1d74d24c99d3d66d">01206</a> <span class="preprocessor">#define U8G_STATE_MSG_GET_IDX(msg) ((msg)&amp;1)</span>
<a name="l01207"></a><a class="code" href="u8glib__ex_8h.html#ab9165d48e0229232b7260effe895a695">01207</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_STATE_MSG_IS_BACKUP(msg) ((msg)&amp;2)</span>
<a name="l01208"></a>01208 <span class="preprocessor"></span>
<a name="l01209"></a>01209 
<a name="l01210"></a>01210 
<a name="l01211"></a>01211 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a160dbf8f8df51ce7814374229365b430">u8g_state_dummy_cb</a>(uint8_t msg);
<a name="l01212"></a>01212 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a0924688efe7bcce4feabb21ca625a0be">u8g_backup_spi</a>(uint8_t msg);               <span class="comment">/* backup SPI state controller */</span>
<a name="l01213"></a>01213 <span class="comment">/* backward compatible definition */</span>
<a name="l01214"></a><a class="code" href="u8glib__ex_8h.html#ab271784599f6807caa9d50f574857f22">01214</a> <span class="preprocessor">#define u8g_backup_avr_spi u8g_backup_spi</span>
<a name="l01215"></a>01215 <span class="preprocessor"></span>
<a name="l01216"></a>01216 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a41a47ddacd5b62b6d80825514e61ad50">u8g_SetHardwareBackup</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="u8glib__ex_8h.html#a6154f06b2cd313f4556ce76843acc4c6">u8g_state_cb</a> backup_cb);
<a name="l01217"></a>01217 
<a name="l01218"></a>01218 <span class="comment">/* u8g_clip.c */</span>
<a name="l01219"></a>01219 
<a name="l01220"></a>01220 uint8_t <a class="code" href="u8glib__ex_8h.html#a4ed53b97d1b77b8ecaff352f5b1c6161">u8g_IsBBXIntersection</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h);
<a name="l01221"></a>01221 
<a name="l01222"></a>01222 
<a name="l01223"></a>01223 <span class="comment">/* u8g_rot.c */</span>
<a name="l01224"></a>01224 
<a name="l01225"></a>01225 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#aaae9e73d3a500818ee404e2b535d813b">u8g_UndoRotation</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01226"></a>01226 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a2c4402a6fab99b6cb22d2aec230bb44f">u8g_SetRot90</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01227"></a>01227 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a4f538f8d755db2ef73534b4463393a69">u8g_SetRot180</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01228"></a>01228 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#afb61be2f82c82bae84402bfddc61b7c8">u8g_SetRot270</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01229"></a>01229 
<a name="l01230"></a>01230 <span class="comment">/* u8g_scale.c */</span>
<a name="l01231"></a>01231 
<a name="l01232"></a>01232 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a8d7bf6b045078cf336797576eeaa2d5d">u8g_UndoScale</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01233"></a>01233 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a3c01b74fd9405c16274ab67b9e603049">u8g_SetScale2x2</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01234"></a>01234 
<a name="l01235"></a>01235 
<a name="l01236"></a>01236 <span class="comment">/* u8g_font.c */</span>
<a name="l01237"></a>01237 
<a name="l01238"></a>01238 <span class="keywordtype">size_t</span> <a class="code" href="u8glib__ex_8h.html#adb6e87d683d4328c342563a5f1b8044e">u8g_font_GetSize</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *font);
<a name="l01239"></a>01239 uint8_t <a class="code" href="u8glib__ex_8h.html#afa56f5a047aa85818332363c16a2c2c1">u8g_font_GetFontStartEncoding</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *font) <a class="code" href="u8glib__ex_8h.html#a4bae67fd4823619e3aa810feaf68e93b">U8G_NOINLINE</a>;
<a name="l01240"></a>01240 uint8_t <a class="code" href="u8glib__ex_8h.html#ae4c0c24bb21f17d85703ce058525b3bc">u8g_font_GetFontEndEncoding</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *font) <a class="code" href="u8glib__ex_8h.html#a4bae67fd4823619e3aa810feaf68e93b">U8G_NOINLINE</a>;
<a name="l01241"></a>01241 
<a name="l01242"></a>01242 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a6e86ed6cd84c8f4aeeb00ff2cf411f27">u8g_SetFont</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <span class="keyword">const</span> u8g_fntpgm_uint8_t *font);
<a name="l01243"></a>01243 
<a name="l01244"></a>01244 uint8_t <a class="code" href="u8glib__ex_8h.html#ad5ac48bca9c77d57d31329dcfbb92ad8">u8g_GetFontBBXWidth</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01245"></a>01245 uint8_t <a class="code" href="u8glib__ex_8h.html#a87154534e87eaa279e4df715362f949e">u8g_GetFontBBXHeight</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01246"></a>01246 int8_t <a class="code" href="u8glib__ex_8h.html#ae8d670dfb6bb613b598305378516398c">u8g_GetFontBBXOffX</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01247"></a>01247 int8_t <a class="code" href="u8glib__ex_8h.html#a311d9f0381fe5a057e7b6b80383e7a85">u8g_GetFontBBXOffY</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01248"></a>01248 uint8_t <a class="code" href="u8glib__ex_8h.html#a913559176a1d5eae233b05bf98aa5e1b">u8g_GetFontCapitalAHeight</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01249"></a>01249 
<a name="l01250"></a>01250 uint8_t <a class="code" href="u8glib__ex_8h.html#a29848f5a00bb679d38c508713c573651">u8g_IsGlyph</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t requested_encoding);
<a name="l01251"></a>01251 int8_t <a class="code" href="u8glib__ex_8h.html#ade9b05bde61f7a08cf4e9df2c7e108ef">u8g_GetGlyphDeltaX</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t requested_encoding);
<a name="l01252"></a>01252 
<a name="l01253"></a>01253 int8_t <a class="code" href="u8glib__ex_8h.html#a2c7e5283135e5644c297b902c1745434">u8g_draw_glyph</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding); <span class="comment">/* used by u8g_cursor.c */</span>
<a name="l01254"></a>01254 
<a name="l01255"></a>01255 int8_t <a class="code" href="u8glib__ex_8h.html#a1cb4e3056dce05339f126e0d8835123b">u8g_DrawGlyphDir</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t encoding);
<a name="l01256"></a>01256 int8_t <a class="code" href="u8glib__ex_8h.html#a6e67ebe319a0df35057381b63f65a556">u8g_DrawGlyph</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding);
<a name="l01257"></a>01257 int8_t <a class="code" href="u8glib__ex_8h.html#a48fdfe462530999ea1a6cfc83474b59e">u8g_DrawGlyph90</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding);
<a name="l01258"></a>01258 int8_t <a class="code" href="u8glib__ex_8h.html#a61ca7ba0f77bf99f7cc3652b43b87eae">u8g_DrawGlyph180</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding);
<a name="l01259"></a>01259 int8_t <a class="code" href="u8glib__ex_8h.html#a129d05b6808920af0ec5b2cb82e5ea2e">u8g_DrawGlyph270</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding);
<a name="l01260"></a>01260 int8_t <a class="code" href="u8glib__ex_8h.html#af65915dbfa8d4d18d12cd2d903cb33bb">u8g_DrawGlyphFontBBX</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t encoding);
<a name="l01261"></a>01261 
<a name="l01262"></a>01262 u8g_uint_t <a class="code" href="u8glib__ex_8h.html#a6f9b5dddd95dd74188553ef57cac1b7b">u8g_DrawStr</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, <span class="keyword">const</span> <span class="keywordtype">char</span> *s);
<a name="l01263"></a>01263 u8g_uint_t <a class="code" href="u8glib__ex_8h.html#a319d54a58496256d83e6baf7743ca2e6">u8g_DrawStr90</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, <span class="keyword">const</span> <span class="keywordtype">char</span> *s);
<a name="l01264"></a>01264 u8g_uint_t <a class="code" href="u8glib__ex_8h.html#acd854ce4012af2f25c83b21630065545">u8g_DrawStr180</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, <span class="keyword">const</span> <span class="keywordtype">char</span> *s);
<a name="l01265"></a>01265 u8g_uint_t <a class="code" href="u8glib__ex_8h.html#a2457b9ede28153aca423dcd82aac0202">u8g_DrawStr270</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, <span class="keyword">const</span> <span class="keywordtype">char</span> *s);
<a name="l01266"></a>01266 
<a name="l01267"></a>01267 u8g_uint_t <a class="code" href="u8glib__ex_8h.html#a46fed0ab654220c07c53b220ef217457">u8g_DrawStrDir</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, <span class="keyword">const</span> <span class="keywordtype">char</span> *s);
<a name="l01268"></a>01268 
<a name="l01269"></a>01269 
<a name="l01270"></a>01270 u8g_uint_t <a class="code" href="u8glib__ex_8h.html#ab9303cb12e0ae960f9e5b552af57a0c8">u8g_DrawStrP</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, <span class="keyword">const</span> u8g_pgm_uint8_t *s);
<a name="l01271"></a>01271 u8g_uint_t <a class="code" href="u8glib__ex_8h.html#ac5b9eb94fb0ae65de7e8d24ac5f70cbf">u8g_DrawStr90P</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, <span class="keyword">const</span> u8g_pgm_uint8_t *s);
<a name="l01272"></a>01272 u8g_uint_t <a class="code" href="u8glib__ex_8h.html#aebc8c1a5fbbf49f4829a6ba21f0686d2">u8g_DrawStr180P</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, <span class="keyword">const</span> u8g_pgm_uint8_t *s);
<a name="l01273"></a>01273 u8g_uint_t <a class="code" href="u8glib__ex_8h.html#ae4320777a89f8f42189e6f62bd471954">u8g_DrawStr270P</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, <span class="keyword">const</span> u8g_pgm_uint8_t *s);
<a name="l01274"></a>01274 
<a name="l01275"></a>01275 
<a name="l01276"></a>01276 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#ab9ee42930984106f88f6ea7e1a00ee90">u8g_SetFontRefHeightText</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01277"></a>01277 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#af86f83a99306b52f7fd8c580889f8567">u8g_SetFontRefHeightExtendedText</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01278"></a>01278 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a092683cf0cb511fbddab979910a79690">u8g_SetFontRefHeightAll</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01279"></a>01279 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a58545bcbc9965a4f73c39e5cb1cd1c3c">u8g_SetFontLineSpacingFactor</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t factor);
<a name="l01280"></a>01280 
<a name="l01281"></a>01281 u8g_uint_t <a class="code" href="u8glib__ex_8h.html#a14aded9e34f656aec5f4124deab1ad33">u8g_font_calc_vref_font</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01282"></a>01282 u8g_uint_t <a class="code" href="u8glib__ex_8h.html#af85dfb57d3409abb207fc2e013223e5e">u8g_font_calc_vref_bottom</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01283"></a>01283 u8g_uint_t <a class="code" href="u8glib__ex_8h.html#a03fc713c8662f272b6d25a7d9951ed82">u8g_font_calc_vref_top</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01284"></a>01284 u8g_uint_t <a class="code" href="u8glib__ex_8h.html#a29011ec90e29fb9bb85cdc1b3707c9a9">u8g_font_calc_vref_center</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01285"></a>01285 
<a name="l01286"></a>01286 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a9c3ea72b6af49eae8f5dd98c4a581ceb">u8g_SetFontPosBaseline</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01287"></a>01287 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a3f8c9712e4d7697d4388920719e8cbca">u8g_SetFontPosBottom</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01288"></a>01288 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#aa000c1c9bdc6d372af6cb55358352dfa">u8g_SetFontPosCenter</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01289"></a>01289 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a18771df48680ba78e4e85e160f37fdcd">u8g_SetFontPosTop</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01290"></a>01290 
<a name="l01291"></a>01291 
<a name="l01292"></a>01292 u8g_uint_t <a class="code" href="u8glib__ex_8h.html#a54db891c9ab7a64c7a0a6e74aa310fca">u8g_GetStrPixelWidth</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <span class="keyword">const</span> <span class="keywordtype">char</span> *s);
<a name="l01293"></a>01293 u8g_uint_t <a class="code" href="u8glib__ex_8h.html#a7907e1fbf604f92fd5151259863b0e3e">u8g_GetStrPixelWidthP</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <span class="keyword">const</span> u8g_pgm_uint8_t *s);
<a name="l01294"></a>01294 int8_t <a class="code" href="u8glib__ex_8h.html#a1fbc1a5d9e69898e73709c4cd5ee9c92">u8g_GetStrX</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <span class="keyword">const</span> <span class="keywordtype">char</span> *s);
<a name="l01295"></a>01295 int8_t <a class="code" href="u8glib__ex_8h.html#adf6e76cf4a7cf84800a94932a964e831">u8g_GetStrXP</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <span class="keyword">const</span> u8g_pgm_uint8_t *s);
<a name="l01296"></a>01296 u8g_uint_t <a class="code" href="u8glib__ex_8h.html#ae0047a80f65fb75a24b8ffdb10d5f4b9">u8g_GetStrWidth</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <span class="keyword">const</span> <span class="keywordtype">char</span> *s);
<a name="l01297"></a>01297 u8g_uint_t <a class="code" href="u8glib__ex_8h.html#a670ba3fa896b6be450f38bf74e810c23">u8g_GetStrWidthP</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <span class="keyword">const</span> u8g_pgm_uint8_t *s);
<a name="l01298"></a>01298 
<a name="l01299"></a>01299 u8g_uint_t <a class="code" href="u8glib__ex_8h.html#a5b76235fc71768102bda78aa2409c3b8">u8g_DrawStrFontBBX</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, <span class="keyword">const</span> <span class="keywordtype">char</span> *s);
<a name="l01300"></a>01300 
<a name="l01301"></a>01301 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a08337748263d5b42bcf4a2a13caeb232">u8g_GetStrMinBox</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <span class="keyword">const</span> <span class="keywordtype">char</span> *s, u8g_uint_t *x, u8g_uint_t *y, u8g_uint_t *width, u8g_uint_t *height);
<a name="l01302"></a>01302 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a1cf6ac958121dc2b77c0646443fcb877">u8g_GetStrAMinBox</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <span class="keyword">const</span> <span class="keywordtype">char</span> *s, u8g_uint_t *x, u8g_uint_t *y, u8g_uint_t *width, u8g_uint_t *height);
<a name="l01303"></a>01303 
<a name="l01304"></a>01304 
<a name="l01305"></a>01305 u8g_uint_t <a class="code" href="u8glib__ex_8h.html#aaf51395dc0fc4044fe1ddcb87ca78084">u8g_DrawAAStr</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, <span class="keyword">const</span> <span class="keywordtype">char</span> *s);
<a name="l01306"></a>01306 
<a name="l01307"></a>01307 <span class="comment">/* u8g_rect.c */</span>
<a name="l01308"></a>01308 
<a name="l01309"></a>01309 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#abee278737d88e8d77b6d7994a98f1f11">u8g_draw_box</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) <a class="code" href="u8glib__ex_8h.html#a4bae67fd4823619e3aa810feaf68e93b">U8G_NOINLINE</a>;
<a name="l01310"></a>01310 
<a name="l01311"></a>01311 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a3a6eaa436ef223e13c617bc0bc635f8d">u8g_DrawHLine</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w);
<a name="l01312"></a>01312 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a92f4575dca0eddb0b91f19470bfc718a">u8g_DrawVLine</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w);
<a name="l01313"></a>01313 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a91723bfce86067c2e2c306536afb5b91">u8g_DrawFrame</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h);
<a name="l01314"></a>01314 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a925514cc889c179cef06f852d28bc1b4">u8g_DrawBox</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h);
<a name="l01315"></a>01315 
<a name="l01316"></a>01316 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a0555ba859472030ec48497a9850024d7">u8g_DrawRFrame</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, u8g_uint_t r);
<a name="l01317"></a>01317 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a005bf8ce427b9f74b89a11f38bcf327f">u8g_DrawRBox</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, u8g_uint_t r);
<a name="l01318"></a>01318 
<a name="l01319"></a>01319 <span class="comment">/* u8g_bitmap.c */</span>
<a name="l01320"></a>01320 
<a name="l01321"></a>01321 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a4235589018f862b762d61df1665ec45c">u8g_DrawHBitmap</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, <span class="keyword">const</span> uint8_t *bitmap);
<a name="l01322"></a>01322 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#aa849582e94878b370c82fca8999cce10">u8g_DrawHBitmapP</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, <span class="keyword">const</span> u8g_pgm_uint8_t *bitmap);
<a name="l01323"></a>01323 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#accd306d6742d4ffa904d4badf701966e">u8g_DrawBitmap</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, u8g_uint_t h, <span class="keyword">const</span> uint8_t *bitmap);
<a name="l01324"></a>01324 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a98d974acd2f313542531b3fb72808912">u8g_DrawBitmapP</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, u8g_uint_t h, <span class="keyword">const</span> u8g_pgm_uint8_t *bitmap);
<a name="l01325"></a>01325 
<a name="l01326"></a>01326 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a285b1dbbd0081a538bd2e8bbae82c002">u8g_DrawXBM</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, <span class="keyword">const</span> uint8_t *bitmap);
<a name="l01327"></a>01327 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a9f120562a173995d4503aa1b2263575d">u8g_DrawXBMP</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, <span class="keyword">const</span> u8g_pgm_uint8_t *bitmap);
<a name="l01328"></a>01328 
<a name="l01329"></a>01329 
<a name="l01330"></a>01330 <span class="comment">/* u8g_line.c */</span>
<a name="l01331"></a>01331 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#ae694d52b20e12a8e2c05df58c0af58d7">u8g_DrawLine</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x1, u8g_uint_t y1, u8g_uint_t x2, u8g_uint_t y2);
<a name="l01332"></a>01332 
<a name="l01333"></a>01333 
<a name="l01334"></a>01334 <span class="comment">/* u8g_circle.c */</span>
<a name="l01335"></a>01335 
<a name="l01336"></a>01336 <span class="comment">/* the following, commented code has been rewritten or is not yet finished</span>
<a name="l01337"></a>01337 <span class="comment">#define U8G_CIRC_UPPER_RIGHT 0x01</span>
<a name="l01338"></a>01338 <span class="comment">#define U8G_CIRC_UPPER_LEFT  0x02</span>
<a name="l01339"></a>01339 <span class="comment">#define U8G_CIRC_LOWER_LEFT 0x04</span>
<a name="l01340"></a>01340 <span class="comment">#define U8G_CIRC_LOWER_RIGHT  0x08</span>
<a name="l01341"></a>01341 <span class="comment">#define U8G_CIRC_ALL (U8G_CIRC_UPPER_RIGHT|U8G_CIRC_UPPER_LEFT|U8G_CIRC_LOWER_RIGHT|U8G_CIRC_LOWER_LEFT)</span>
<a name="l01342"></a>01342 <span class="comment">void u8g_DrawEmpCirc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option);</span>
<a name="l01343"></a>01343 <span class="comment">void u8g_DrawFillCirc(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option);</span>
<a name="l01344"></a>01344 <span class="comment">void u8g_DrawEllipseRect(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t x1, u8g_uint_t y1);</span>
<a name="l01345"></a>01345 <span class="comment">*/</span>
<a name="l01346"></a>01346 
<a name="l01347"></a><a class="code" href="u8glib__ex_8h.html#ad8555b8e7a0b96d274bbbcc0dcab6c27">01347</a> <span class="preprocessor">#define U8G_DRAW_UPPER_RIGHT 0x01</span>
<a name="l01348"></a><a class="code" href="u8glib__ex_8h.html#afc152466c13de315ad22628ac46037ee">01348</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_DRAW_UPPER_LEFT  0x02</span>
<a name="l01349"></a><a class="code" href="u8glib__ex_8h.html#a10b6b35f2ce7ce4fa654e65c17a1843e">01349</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_DRAW_LOWER_LEFT 0x04</span>
<a name="l01350"></a><a class="code" href="u8glib__ex_8h.html#a6ccafec75c745f31707599a188f00e1d">01350</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_DRAW_LOWER_RIGHT  0x08</span>
<a name="l01351"></a><a class="code" href="u8glib__ex_8h.html#a7a71e93a8b3acbd52a39f4f463f57798">01351</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_DRAW_ALL (U8G_DRAW_UPPER_RIGHT|U8G_DRAW_UPPER_LEFT|U8G_DRAW_LOWER_RIGHT|U8G_DRAW_LOWER_LEFT)</span>
<a name="l01352"></a>01352 <span class="preprocessor"></span>
<a name="l01353"></a>01353 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a5bec49fe7435bffb073bf2138cbaf80d">u8g_draw_circle</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option) <a class="code" href="u8glib__ex_8h.html#a4bae67fd4823619e3aa810feaf68e93b">U8G_NOINLINE</a>;
<a name="l01354"></a>01354 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a14a403f9e58fc804686735528417defe">u8g_draw_disc</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option) <a class="code" href="u8glib__ex_8h.html#a4bae67fd4823619e3aa810feaf68e93b">U8G_NOINLINE</a>;
<a name="l01355"></a>01355 
<a name="l01356"></a>01356 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a1405467cc06581b366850cb6624d4dfd">u8g_DrawCircle</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option);
<a name="l01357"></a>01357 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a7c2df9ab76c0e99e31b36e52003864a0">u8g_DrawDisc</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rad, uint8_t option);
<a name="l01358"></a>01358 
<a name="l01359"></a>01359 <span class="comment">/* u8g_ellipse.c */</span>
<a name="l01360"></a>01360 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#ab6b3fc802a0bceae53ec5fbfc01ec7c7">u8g_DrawEllipse</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rx, u8g_uint_t ry, uint8_t option);
<a name="l01361"></a>01361 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a6f03478fb52cb9dd7fb4e67278d5f9c9">u8g_DrawFilledEllipse</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rx, u8g_uint_t ry, uint8_t option);
<a name="l01362"></a>01362 
<a name="l01363"></a>01363 <span class="comment">/* u8g_clip.c */</span>
<a name="l01364"></a>01364 uint8_t <a class="code" href="u8glib__ex_8h.html#a247c15396e13f07204886eb359d54a78">u8g_is_box_bbx_intersection</a>(<a class="code" href="struct__u8g__box__t.html">u8g_box_t</a> *box, <a class="code" href="struct__u8g__dev__arg__bbx__t.html">u8g_dev_arg_bbx_t</a> *bbx);
<a name="l01365"></a>01365 
<a name="l01366"></a>01366 
<a name="l01367"></a>01367 <span class="comment">/* u8g_cursor.c */</span>
<a name="l01368"></a>01368 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#aaf0fc132606b27cc053d5502bb96bc7d">u8g_SetCursorFont</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <span class="keyword">const</span> u8g_pgm_uint8_t *cursor_font);
<a name="l01369"></a>01369 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a538bd2f2366ad7bc19a9b5f74e421ca7">u8g_SetCursorStyle</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t encoding);
<a name="l01370"></a>01370 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a998b301effe4ae48f8147800aefdd0a8">u8g_SetCursorPos</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t cursor_x, u8g_uint_t cursor_y);
<a name="l01371"></a>01371 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a221455dfbe881df9900a6d932eb016df">u8g_SetCursorColor</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t fg, uint8_t bg);
<a name="l01372"></a>01372 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a4fb36ef6b49df75171998889664e02f0">u8g_EnableCursor</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01373"></a>01373 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a048167ee26f632a2bed4766419057a17">u8g_DisableCursor</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01374"></a>01374 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a6f8be468a0a702cc917b4ef342408bb3">u8g_DrawCursor</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g);
<a name="l01375"></a>01375 
<a name="l01376"></a>01376 
<a name="l01377"></a>01377 
<a name="l01378"></a>01378 <span class="comment">/*===============================================================*/</span>
<a name="l01379"></a>01379 <span class="comment">/* u8g_virtual_screen.c */</span>
<a name="l01380"></a>01380 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a5620cf6600dfad844a238741fd49bff3">u8g_SetVirtualScreenDimension</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *vs_u8g, u8g_uint_t width, u8g_uint_t height);
<a name="l01381"></a>01381 uint8_t <a class="code" href="u8glib__ex_8h.html#a2413a9892c611b429013d3d6d704b910">u8g_AddToVirtualScreen</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *vs_u8g, u8g_uint_t x, u8g_uint_t y, <a class="code" href="struct__u8g__t.html">u8g_t</a> *child_u8g);
<a name="l01382"></a>01382 
<a name="l01383"></a>01383 <span class="comment">/*===============================================================*/</span>
<a name="l01384"></a>01384 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a6b98d77e399c0e6b8d5a5d0bce1cd9ca">st_Draw</a>(uint8_t fps);
<a name="l01385"></a>01385 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#ab0f086c0c9acf408fda8c7b77ef0dae7">st_Step</a>(uint8_t player_pos, uint8_t is_auto_fire, uint8_t is_fire);
<a name="l01386"></a>01386 
<a name="l01387"></a>01387 <span class="comment">/*===============================================================*/</span>
<a name="l01388"></a>01388 <span class="comment">/* u8g_com_i2c.c */</span>
<a name="l01389"></a>01389 
<a name="l01390"></a>01390 <span class="comment">/* options for u8g_i2c_init() */</span>
<a name="l01391"></a><a class="code" href="u8glib__ex_8h.html#a2af4c3c82a9904829d79d2fd545e095b">01391</a> <span class="preprocessor">#define U8G_I2C_OPT_NONE 0</span>
<a name="l01392"></a>01392 <span class="preprocessor"></span>
<a name="l01393"></a>01393 <span class="comment">/* retrun values from u8g_twi_get_error() */</span>
<a name="l01394"></a><a class="code" href="u8glib__ex_8h.html#a3f984ecf578a72caf7c3323df6176bec">01394</a> <span class="preprocessor">#define U8G_I2C_ERR_NONE 0x00</span>
<a name="l01395"></a>01395 <span class="preprocessor"></span><span class="comment">/* the following values are bit masks */</span>
<a name="l01396"></a><a class="code" href="u8glib__ex_8h.html#a785aab107366c533a6662ac239c9afa9">01396</a> <span class="preprocessor">#define U8G_I2C_ERR_TIMEOUT 0x01</span>
<a name="l01397"></a><a class="code" href="u8glib__ex_8h.html#a960fe5ad32cdf453932a24580be444a2">01397</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_I2C_ERR_BUS 0x02</span>
<a name="l01398"></a>01398 <span class="preprocessor"></span>
<a name="l01399"></a>01399 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#ae9556ea5b2afc4b6c6bf81d6c980096a">u8g_i2c_clear_error</a>(<span class="keywordtype">void</span>) U8G_NOINLINE;
<a name="l01400"></a>01400 uint8_t  <a class="code" href="u8glib__ex_8h.html#aabf799b8bbb45d18c4980f5f59dc0917">u8g_i2c_get_error</a>(<span class="keywordtype">void</span>) U8G_NOINLINE;
<a name="l01401"></a>01401 uint8_t <a class="code" href="u8glib__ex_8h.html#a0d3a387a9077e0e6a617846aae0fb766">u8g_i2c_get_err_pos</a>(<span class="keywordtype">void</span>) U8G_NOINLINE;
<a name="l01402"></a>01402 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a13601919324110eb72c348808abc729d">u8g_i2c_init</a>(uint8_t options) U8G_NOINLINE;                <span class="comment">/* use U8G_I2C_OPT_NONE as options */</span>
<a name="l01403"></a>01403 uint8_t <a class="code" href="u8glib__ex_8h.html#a4608f04eb41d11108aa8d501b093af39">u8g_i2c_wait</a>(uint8_t mask, uint8_t pos) U8G_NOINLINE;
<a name="l01404"></a>01404 uint8_t <a class="code" href="u8glib__ex_8h.html#a426ee74566b79c6206ed7a5781583cea">u8g_i2c_start</a>(uint8_t sla) U8G_NOINLINE;
<a name="l01405"></a>01405 uint8_t <a class="code" href="u8glib__ex_8h.html#ace83d3424870001a8a5a7964a3425599">u8g_i2c_send_byte</a>(uint8_t data) U8G_NOINLINE;
<a name="l01406"></a>01406 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#ad71e1c7ade509e3b39362fab55f860a8">u8g_i2c_stop</a>(<span class="keywordtype">void</span>) U8G_NOINLINE;
<a name="l01407"></a>01407 
<a name="l01408"></a>01408 
<a name="l01409"></a>01409 <span class="comment">/*===============================================================*/</span>
<a name="l01410"></a>01410 <span class="comment">/* u8g_u8toa.c */</span>
<a name="l01411"></a>01411 <span class="comment">/* v = value, d = number of digits */</span>
<a name="l01412"></a>01412 const <span class="keywordtype">char</span> *<a class="code" href="u8glib__ex_8h.html#a9633d814c7d6b010db34eb944cbdeee5">u8g_u8toa</a>(uint8_t v, uint8_t d);
<a name="l01413"></a>01413 
<a name="l01414"></a>01414 <span class="comment">/* u8g_u8toa.c */</span>
<a name="l01415"></a>01415 <span class="comment">/* v = value, d = number of digits */</span>
<a name="l01416"></a>01416 const <span class="keywordtype">char</span> *<a class="code" href="u8glib__ex_8h.html#a6a725a389872c23964b6b1352ae0593f">u8g_u16toa</a>(uint16_t v, uint8_t d);
<a name="l01417"></a>01417 
<a name="l01418"></a>01418 <span class="comment">/*===============================================================*/</span>
<a name="l01419"></a>01419 <span class="comment">/* u8g_delay.c */</span>
<a name="l01420"></a>01420 
<a name="l01421"></a>01421 <span class="comment">/* delay by the specified number of milliseconds */</span>
<a name="l01422"></a>01422 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#af204c498d509e70715337a419044c22f">u8g_Delay</a>(uint16_t val);
<a name="l01423"></a>01423 
<a name="l01424"></a>01424 <span class="comment">/* delay by one microsecond */</span>
<a name="l01425"></a>01425 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a1920961449fcdb3579c6c7e3d6e41877">u8g_MicroDelay</a>(<span class="keywordtype">void</span>);
<a name="l01426"></a>01426 
<a name="l01427"></a>01427 <span class="comment">/* delay by 10 microseconds */</span>
<a name="l01428"></a>01428 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#ad7fff136315eef65dcb8939cfaf7b30e">u8g_10MicroDelay</a>(<span class="keywordtype">void</span>);
<a name="l01429"></a>01429 
<a name="l01430"></a>01430 <span class="comment">/*===============================================================*/</span>
<a name="l01431"></a>01431 <span class="comment">/* chessengine.c */</span>
<a name="l01432"></a><a class="code" href="u8glib__ex_8h.html#a9360394960015077eaeb18ffa5f7344a">01432</a> <span class="preprocessor">#define CHESS_KEY_NONE 0</span>
<a name="l01433"></a><a class="code" href="u8glib__ex_8h.html#a0a10f981486a15e5576b32a16c00b048">01433</a> <span class="preprocessor"></span><span class="preprocessor">#define CHESS_KEY_NEXT 1</span>
<a name="l01434"></a><a class="code" href="u8glib__ex_8h.html#a21994dfc2a644e88028802b7525f1665">01434</a> <span class="preprocessor"></span><span class="preprocessor">#define CHESS_KEY_PREV 2</span>
<a name="l01435"></a><a class="code" href="u8glib__ex_8h.html#a17bd41fd263d92960e435cd70f2941bd">01435</a> <span class="preprocessor"></span><span class="preprocessor">#define CHESS_KEY_SELECT 3</span>
<a name="l01436"></a><a class="code" href="u8glib__ex_8h.html#abf0601f0bbe3454ade482e53fe0cb12d">01436</a> <span class="preprocessor"></span><span class="preprocessor">#define CHESS_KEY_BACK 4</span>
<a name="l01437"></a>01437 <span class="preprocessor"></span>
<a name="l01438"></a>01438 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#accec6a302f3c8c6e92889e86b03cc9ac">chess_Init</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t empty_body_color);
<a name="l01439"></a>01439 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a931f3074f1182ff3ffba59790e789d41">chess_Draw</a>(<span class="keywordtype">void</span>);
<a name="l01440"></a>01440 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a084f902c526cfbfedf24346a96aedcb9">chess_Step</a>(uint8_t keycode);
<a name="l01441"></a>01441 
<a name="l01442"></a>01442 <span class="comment">/*===============================================================*/</span>
<a name="l01443"></a>01443 <span class="comment">/* font definitions */</span>
<a name="l01444"></a>01444 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_m2icon_5[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_m2icon_5&quot;</span>);
<a name="l01445"></a>01445 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_m2icon_7[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_m2icon_7&quot;</span>);
<a name="l01446"></a>01446 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_m2icon_9[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_m2icon_9&quot;</span>);
<a name="l01447"></a>01447 
<a name="l01448"></a>01448 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_u8glib_4[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_u8glib_4&quot;</span>);
<a name="l01449"></a>01449 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_u8glib_4r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_u8glib_4r&quot;</span>);
<a name="l01450"></a>01450 
<a name="l01451"></a>01451 
<a name="l01452"></a>01452 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_6x12_75r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_6x12_75r&quot;</span>);
<a name="l01453"></a>01453 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_6x13_75r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_6x13_75r&quot;</span>);
<a name="l01454"></a>01454 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_7x13_75r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_7x13_75r&quot;</span>);
<a name="l01455"></a>01455 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_8x13_75r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_8x13_75r&quot;</span>);
<a name="l01456"></a>01456 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_9x15_75r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_9x15_75r&quot;</span>);
<a name="l01457"></a>01457 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_9x18_75r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_9x18_75r&quot;</span>);
<a name="l01458"></a>01458 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_cu12_75r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_cu12_75r&quot;</span>);
<a name="l01459"></a>01459 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_unifont_75r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_unifont_75r&quot;</span>);
<a name="l01460"></a>01460 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_10x20_75r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_10x20_75r&quot;</span>);
<a name="l01461"></a>01461 
<a name="l01462"></a>01462 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_10x20_67_75[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_10x20_67_75&quot;</span>);
<a name="l01463"></a>01463 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_10x20_78_79[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_10x20_78_79&quot;</span>);
<a name="l01464"></a>01464 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_10x20[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_10x20&quot;</span>);
<a name="l01465"></a>01465 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_10x20r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_10x20r&quot;</span>);
<a name="l01466"></a>01466 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_4x6[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_4x6&quot;</span>);
<a name="l01467"></a>01467 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_4x6r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_4x6r&quot;</span>);
<a name="l01468"></a>01468 <span class="comment">//extern const u8g_fntpgm_uint8_t u8g_font_4x6n[] U8G_FONT_SECTION(&quot;u8g_font_4x6n&quot;);</span>
<a name="l01469"></a>01469 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_5x7[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_5x7&quot;</span>);
<a name="l01470"></a>01470 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_5x7r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_5x7r&quot;</span>);
<a name="l01471"></a>01471 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_5x8[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_5x8&quot;</span>);
<a name="l01472"></a>01472 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_5x8r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_5x8r&quot;</span>);
<a name="l01473"></a>01473 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_6x10[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_6x10&quot;</span>);
<a name="l01474"></a>01474 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_6x10r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_6x10r&quot;</span>);
<a name="l01475"></a>01475 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_6x12_67_75[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_6x12_67_75&quot;</span>);
<a name="l01476"></a>01476 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_6x12_78_79[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_6x12_78_79&quot;</span>);
<a name="l01477"></a>01477 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_6x12[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_6x12&quot;</span>);
<a name="l01478"></a>01478 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_6x12r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_6x12r&quot;</span>);
<a name="l01479"></a>01479 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_6x13_67_75[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_6x13_67_75&quot;</span>);
<a name="l01480"></a>01480 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_6x13_78_79[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_6x13_78_79&quot;</span>);
<a name="l01481"></a>01481 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_6x13B[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_6x13B&quot;</span>);
<a name="l01482"></a>01482 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_6x13Br[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_6x13Br&quot;</span>);
<a name="l01483"></a>01483 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_6x13[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_6x13&quot;</span>);
<a name="l01484"></a>01484 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_6x13r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_6x13r&quot;</span>);
<a name="l01485"></a>01485 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_6x13O[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_6x13O&quot;</span>);
<a name="l01486"></a>01486 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_6x13Or[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_6x13Or&quot;</span>);
<a name="l01487"></a>01487 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_7x13_67_75[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_7x13_67_75&quot;</span>);
<a name="l01488"></a>01488 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_7x13_78_79[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_7x13_78_79&quot;</span>);
<a name="l01489"></a>01489 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_7x13B[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_7x13B&quot;</span>);
<a name="l01490"></a>01490 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_7x13Br[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_7x13Br&quot;</span>);
<a name="l01491"></a>01491 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_7x13[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_7x13&quot;</span>);
<a name="l01492"></a>01492 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_7x13r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_7x13r&quot;</span>);
<a name="l01493"></a>01493 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_7x13O[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_7x13O&quot;</span>);
<a name="l01494"></a>01494 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_7x13Or[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_7x13Or&quot;</span>);
<a name="l01495"></a>01495 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_7x14B[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_7x14B&quot;</span>);
<a name="l01496"></a>01496 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_7x14Br[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_7x14Br&quot;</span>);
<a name="l01497"></a>01497 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_7x14[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_7x14&quot;</span>);
<a name="l01498"></a>01498 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_7x14r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_7x14r&quot;</span>);
<a name="l01499"></a>01499 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_8x13_67_75[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_8x13_67_75&quot;</span>);
<a name="l01500"></a>01500 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_8x13B[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_8x13B&quot;</span>);
<a name="l01501"></a>01501 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_8x13Br[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_8x13Br&quot;</span>);
<a name="l01502"></a>01502 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_8x13[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_8x13&quot;</span>);
<a name="l01503"></a>01503 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_8x13r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_8x13r&quot;</span>);
<a name="l01504"></a>01504 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_8x13O[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_8x13O&quot;</span>);
<a name="l01505"></a>01505 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_8x13Or[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_8x13Or&quot;</span>);
<a name="l01506"></a>01506 
<a name="l01507"></a>01507 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_9x15_67_75[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_9x15_67_75&quot;</span>);
<a name="l01508"></a>01508 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_9x15_78_79[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_9x15_78_79&quot;</span>);
<a name="l01509"></a>01509 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_9x15B[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_9x15B&quot;</span>);
<a name="l01510"></a>01510 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_9x15Br[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_9x15Br&quot;</span>);
<a name="l01511"></a>01511 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_9x15[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_9x15&quot;</span>);
<a name="l01512"></a>01512 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_9x15r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_9x15r&quot;</span>);
<a name="l01513"></a>01513 
<a name="l01514"></a>01514 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_9x18_67_75[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_9x18_67_75&quot;</span>);
<a name="l01515"></a>01515 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_9x18_78_79[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_9x18_78_79&quot;</span>);
<a name="l01516"></a>01516 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_9x18B[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_9x18B&quot;</span>);
<a name="l01517"></a>01517 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_9x18[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_9x18&quot;</span>);
<a name="l01518"></a>01518 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_9x18Br[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_9x18Br&quot;</span>);
<a name="l01519"></a>01519 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_9x18r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_9x18r&quot;</span>);
<a name="l01520"></a>01520 
<a name="l01521"></a>01521 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_cursor[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_cursor&quot;</span>);
<a name="l01522"></a>01522 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_cursorr[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_cursorr&quot;</span>);
<a name="l01523"></a>01523 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_micro[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_micro&quot;</span>);
<a name="l01524"></a>01524 
<a name="l01525"></a>01525 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_cu12_67_75[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_cu12_67_75&quot;</span>);
<a name="l01526"></a>01526 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_cu12_78_79[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_cu12_78_79&quot;</span>);
<a name="l01527"></a>01527 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_cu12[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_cu12&quot;</span>);
<a name="l01528"></a>01528 
<a name="l01529"></a>01529 <span class="comment">/*</span>
<a name="l01530"></a>01530 <span class="comment">  Free-Universal Bold</span>
<a name="l01531"></a>01531 <span class="comment">  r: Reduced char set (codes 32 - 128)</span>
<a name="l01532"></a>01532 <span class="comment">  n: Numbers (codes 42 - 57)</span>
<a name="l01533"></a>01533 <span class="comment">  no char: Full set (codes 32 - 255)</span>
<a name="l01534"></a>01534 <span class="comment">*/</span>
<a name="l01535"></a>01535 
<a name="l01536"></a>01536 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fub11[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fub11&quot;</span>);
<a name="l01537"></a>01537 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fub11r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fub11r&quot;</span>);
<a name="l01538"></a>01538 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fub11n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fub11n&quot;</span>);
<a name="l01539"></a>01539 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fub14[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fub14&quot;</span>);
<a name="l01540"></a>01540 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fub14r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fub14r&quot;</span>);
<a name="l01541"></a>01541 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fub14n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fub14n&quot;</span>);
<a name="l01542"></a>01542 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fub17[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fub17&quot;</span>);
<a name="l01543"></a>01543 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fub17r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fub17r&quot;</span>);
<a name="l01544"></a>01544 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fub17n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fub17n&quot;</span>);
<a name="l01545"></a>01545 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fub20[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fub20&quot;</span>);
<a name="l01546"></a>01546 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fub20r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fub20r&quot;</span>);
<a name="l01547"></a>01547 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fub20n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fub20n&quot;</span>);
<a name="l01548"></a>01548 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fub25[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fub25&quot;</span>);
<a name="l01549"></a>01549 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fub25r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fub25r&quot;</span>);
<a name="l01550"></a>01550 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fub25n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fub25n&quot;</span>);
<a name="l01551"></a>01551 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fub30[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fub30&quot;</span>);
<a name="l01552"></a>01552 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fub30r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fub30r&quot;</span>);
<a name="l01553"></a>01553 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fub30n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fub30n&quot;</span>);
<a name="l01554"></a>01554 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fub35n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fub35n&quot;</span>);
<a name="l01555"></a>01555 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fub42n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fub42n&quot;</span>);
<a name="l01556"></a>01556 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fub49n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fub49n&quot;</span>);
<a name="l01557"></a>01557 
<a name="l01558"></a>01558 <span class="comment">/*</span>
<a name="l01559"></a>01559 <span class="comment">  Free-Universal Regular</span>
<a name="l01560"></a>01560 <span class="comment">  r: Reduced char set (codes 32 - 128)</span>
<a name="l01561"></a>01561 <span class="comment">  n: Numbers (codes 42 - 57)</span>
<a name="l01562"></a>01562 <span class="comment">  no char: Full set (codes 32 - 255)</span>
<a name="l01563"></a>01563 <span class="comment">*/</span>
<a name="l01564"></a>01564 
<a name="l01565"></a>01565 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fur11[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fur11&quot;</span>);
<a name="l01566"></a>01566 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fur11r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fur11r&quot;</span>);
<a name="l01567"></a>01567 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fur11n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fur11n&quot;</span>);
<a name="l01568"></a>01568 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fur14[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fur14&quot;</span>);
<a name="l01569"></a>01569 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fur14r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fur14r&quot;</span>);
<a name="l01570"></a>01570 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fur14n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fur14n&quot;</span>);
<a name="l01571"></a>01571 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fur17[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fur17&quot;</span>);
<a name="l01572"></a>01572 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fur17r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fur17r&quot;</span>);
<a name="l01573"></a>01573 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fur17n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fur17n&quot;</span>);
<a name="l01574"></a>01574 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fur20[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fur20&quot;</span>);
<a name="l01575"></a>01575 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fur20r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fur20r&quot;</span>);
<a name="l01576"></a>01576 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fur20n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fur20n&quot;</span>);
<a name="l01577"></a>01577 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fur25[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fur25&quot;</span>);
<a name="l01578"></a>01578 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fur25r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fur25r&quot;</span>);
<a name="l01579"></a>01579 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fur25n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fur25n&quot;</span>);
<a name="l01580"></a>01580 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fur30[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fur30&quot;</span>);
<a name="l01581"></a>01581 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fur30r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fur30r&quot;</span>);
<a name="l01582"></a>01582 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fur30n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fur30n&quot;</span>);
<a name="l01583"></a>01583 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fur35n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fur35n&quot;</span>);
<a name="l01584"></a>01584 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fur42n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fur42n&quot;</span>);
<a name="l01585"></a>01585 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fur49n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fur49n&quot;</span>);
<a name="l01586"></a>01586 
<a name="l01587"></a>01587 <span class="comment">/*</span>
<a name="l01588"></a>01588 <span class="comment">  Gentium Bold</span>
<a name="l01589"></a>01589 <span class="comment">  r: Reduced char set (codes 32 - 128)</span>
<a name="l01590"></a>01590 <span class="comment">  n: Numbers (codes 42 - 57)</span>
<a name="l01591"></a>01591 <span class="comment">  no char: Full set (codes 32 - 255)</span>
<a name="l01592"></a>01592 <span class="comment">*/</span>
<a name="l01593"></a>01593 
<a name="l01594"></a>01594 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdb11[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdb11&quot;</span>);
<a name="l01595"></a>01595 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdb12[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdb12&quot;</span>);
<a name="l01596"></a>01596 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdb14[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdb14&quot;</span>);
<a name="l01597"></a>01597 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdb17[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdb17&quot;</span>);
<a name="l01598"></a>01598 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdb20[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdb20&quot;</span>);
<a name="l01599"></a>01599 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdb25[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdb25&quot;</span>);
<a name="l01600"></a>01600 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdb30[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdb30&quot;</span>);
<a name="l01601"></a>01601 
<a name="l01602"></a>01602 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdb11r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdb11r&quot;</span>);
<a name="l01603"></a>01603 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdb12r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdb12r&quot;</span>);
<a name="l01604"></a>01604 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdb14r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdb14r&quot;</span>);
<a name="l01605"></a>01605 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdb17r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdb17r&quot;</span>);
<a name="l01606"></a>01606 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdb20r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdb20r&quot;</span>);
<a name="l01607"></a>01607 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdb25r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdb25r&quot;</span>);
<a name="l01608"></a>01608 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdb30r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdb30r&quot;</span>);
<a name="l01609"></a>01609 
<a name="l01610"></a>01610 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdb11n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdb11n&quot;</span>);
<a name="l01611"></a>01611 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdb12n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdb12n&quot;</span>);
<a name="l01612"></a>01612 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdb14n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdb14n&quot;</span>);
<a name="l01613"></a>01613 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdb17n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdb17n&quot;</span>);
<a name="l01614"></a>01614 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdb20n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdb20n&quot;</span>);
<a name="l01615"></a>01615 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdb25n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdb25n&quot;</span>);
<a name="l01616"></a>01616 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdb30n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdb30n&quot;</span>);
<a name="l01617"></a>01617 
<a name="l01618"></a>01618 <span class="comment">/*</span>
<a name="l01619"></a>01619 <span class="comment">  Gentium Regular</span>
<a name="l01620"></a>01620 <span class="comment">  r: Reduced char set (codes 32 - 128)</span>
<a name="l01621"></a>01621 <span class="comment">  n: Numbers (codes 42 - 57)</span>
<a name="l01622"></a>01622 <span class="comment">  no char: Full set (codes 32 - 255)</span>
<a name="l01623"></a>01623 <span class="comment">*/</span>
<a name="l01624"></a>01624 
<a name="l01625"></a>01625 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdr9[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdr9&quot;</span>);
<a name="l01626"></a>01626 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdr10[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdr10&quot;</span>);
<a name="l01627"></a>01627 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdr11[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdr11&quot;</span>);
<a name="l01628"></a>01628 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdr12[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdr12&quot;</span>);
<a name="l01629"></a>01629 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdr14[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdr14&quot;</span>);
<a name="l01630"></a>01630 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdr17[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdr17&quot;</span>);
<a name="l01631"></a>01631 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdr20[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdr20&quot;</span>);
<a name="l01632"></a>01632 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdr25[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdr25&quot;</span>);
<a name="l01633"></a>01633 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdr30[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdr30&quot;</span>);
<a name="l01634"></a>01634 
<a name="l01635"></a>01635 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdr9r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdr9r&quot;</span>);
<a name="l01636"></a>01636 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdr10r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdr10r&quot;</span>);
<a name="l01637"></a>01637 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdr11r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdr11r&quot;</span>);
<a name="l01638"></a>01638 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdr12r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdr12r&quot;</span>);
<a name="l01639"></a>01639 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdr14r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdr14r&quot;</span>);
<a name="l01640"></a>01640 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdr17r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdr17r&quot;</span>);
<a name="l01641"></a>01641 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdr20r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdr20r&quot;</span>);
<a name="l01642"></a>01642 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdr25r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdr25r&quot;</span>);
<a name="l01643"></a>01643 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdr30r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdr30r&quot;</span>);
<a name="l01644"></a>01644 
<a name="l01645"></a>01645 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdr9n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdr9n&quot;</span>);
<a name="l01646"></a>01646 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdr10n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdr10n&quot;</span>);
<a name="l01647"></a>01647 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdr11n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdr11n&quot;</span>);
<a name="l01648"></a>01648 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdr12n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdr12n&quot;</span>);
<a name="l01649"></a>01649 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdr14n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdr14n&quot;</span>);
<a name="l01650"></a>01650 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdr17n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdr17n&quot;</span>);
<a name="l01651"></a>01651 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdr20n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdr20n&quot;</span>);
<a name="l01652"></a>01652 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdr25n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdr25n&quot;</span>);
<a name="l01653"></a>01653 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_gdr30n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_gdr30n&quot;</span>);
<a name="l01654"></a>01654 
<a name="l01655"></a>01655 <span class="comment">/*</span>
<a name="l01656"></a>01656 <span class="comment">  Old-Standard Bold</span>
<a name="l01657"></a>01657 <span class="comment">  r: Reduced char set (codes 32 - 128)</span>
<a name="l01658"></a>01658 <span class="comment">  n: Numbers (codes 42 - 57)</span>
<a name="l01659"></a>01659 <span class="comment">  no char: Full set (codes 32 - 255)</span>
<a name="l01660"></a>01660 <span class="comment">*/</span>
<a name="l01661"></a>01661 
<a name="l01662"></a>01662 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_osb18[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_osb18&quot;</span>);
<a name="l01663"></a>01663 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_osb21[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_osb21&quot;</span>);
<a name="l01664"></a>01664 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_osb26[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_osb26&quot;</span>);
<a name="l01665"></a>01665 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_osb29[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_osb29&quot;</span>);
<a name="l01666"></a>01666 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_osb35[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_osb35&quot;</span>);
<a name="l01667"></a>01667 
<a name="l01668"></a>01668 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_osb18r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_osb18r&quot;</span>);
<a name="l01669"></a>01669 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_osb21r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_osb21r&quot;</span>);
<a name="l01670"></a>01670 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_osb26r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_osb26r&quot;</span>);
<a name="l01671"></a>01671 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_osb29r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_osb29r&quot;</span>);
<a name="l01672"></a>01672 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_osb35r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_osb35r&quot;</span>);
<a name="l01673"></a>01673 
<a name="l01674"></a>01674 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_osb18n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_osb18n&quot;</span>);
<a name="l01675"></a>01675 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_osb21n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_osb21n&quot;</span>);
<a name="l01676"></a>01676 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_osb26n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_osb26n&quot;</span>);
<a name="l01677"></a>01677 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_osb29n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_osb29n&quot;</span>);
<a name="l01678"></a>01678 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_osb35n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_osb35n&quot;</span>);
<a name="l01679"></a>01679 
<a name="l01680"></a>01680 <span class="comment">/*</span>
<a name="l01681"></a>01681 <span class="comment">  Old-Standard Regular</span>
<a name="l01682"></a>01682 <span class="comment">  r: Reduced char set (codes 32 - 128)</span>
<a name="l01683"></a>01683 <span class="comment">  n: Numbers (codes 42 - 57)</span>
<a name="l01684"></a>01684 <span class="comment">  no char: Full set (codes 32 - 255)</span>
<a name="l01685"></a>01685 <span class="comment">*/</span>
<a name="l01686"></a>01686 
<a name="l01687"></a>01687 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_osr18[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_osr18&quot;</span>);
<a name="l01688"></a>01688 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_osr21[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_osr21&quot;</span>);
<a name="l01689"></a>01689 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_osr26[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_osr26&quot;</span>);
<a name="l01690"></a>01690 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_osr29[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_osr29&quot;</span>);
<a name="l01691"></a>01691 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_osr35[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_osr35&quot;</span>);
<a name="l01692"></a>01692 
<a name="l01693"></a>01693 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_osr18r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_osr18r&quot;</span>);
<a name="l01694"></a>01694 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_osr21r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_osr21r&quot;</span>);
<a name="l01695"></a>01695 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_osr26r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_osr26r&quot;</span>);
<a name="l01696"></a>01696 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_osr29r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_osr29r&quot;</span>);
<a name="l01697"></a>01697 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_osr35r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_osr35r&quot;</span>);
<a name="l01698"></a>01698 
<a name="l01699"></a>01699 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_osr18n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_osr18n&quot;</span>);
<a name="l01700"></a>01700 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_osr21n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_osr21n&quot;</span>);
<a name="l01701"></a>01701 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_osr26n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_osr26n&quot;</span>);
<a name="l01702"></a>01702 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_osr29n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_osr29n&quot;</span>);
<a name="l01703"></a>01703 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_osr35n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_osr35n&quot;</span>);
<a name="l01704"></a>01704 
<a name="l01705"></a>01705 <span class="comment">//extern const u8g_fntpgm_uint8_t u8g_font_osr41[] U8G_FONT_SECTION(&quot;u8g_font_osr41&quot;);</span>
<a name="l01706"></a>01706 
<a name="l01707"></a>01707 <span class="comment">/* GNU unifont */</span>
<a name="l01708"></a>01708 
<a name="l01709"></a>01709 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_unifont_18_19[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_unifont_18_19&quot;</span>);
<a name="l01710"></a>01710 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_unifont_72_73[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_unifont_72_73&quot;</span>);
<a name="l01711"></a>01711 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_unifont_67_75[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_unifont_67_75&quot;</span>);
<a name="l01712"></a>01712 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_unifont_76[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_unifont_76&quot;</span>);
<a name="l01713"></a>01713 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_unifont_77[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_unifont_77&quot;</span>);
<a name="l01714"></a>01714 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_unifont_78_79[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_unifont_78_79&quot;</span>);
<a name="l01715"></a>01715 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_unifont_86[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_unifont_86&quot;</span>);
<a name="l01716"></a>01716 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_unifont[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_unifont&quot;</span>);
<a name="l01717"></a>01717 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_unifontr[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_unifontr&quot;</span>);
<a name="l01718"></a>01718 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_unifont_0_8[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_unifont_0_8&quot;</span>);
<a name="l01719"></a>01719 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_unifont_2_3[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_unifont_2_3&quot;</span>);
<a name="l01720"></a>01720 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_unifont_4_5[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_unifont_4_5&quot;</span>);
<a name="l01721"></a>01721 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_unifont_8_9[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_unifont_8_9&quot;</span>);
<a name="l01722"></a>01722 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_unifont_12_13[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_unifont_12_13&quot;</span>);
<a name="l01723"></a>01723 
<a name="l01724"></a>01724 
<a name="l01725"></a>01725 <span class="comment">/* 04b fonts */</span>
<a name="l01726"></a>01726 
<a name="l01727"></a>01727 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_04b_03b[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_04b_03b&quot;</span>);
<a name="l01728"></a>01728 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_04b_03bn[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_04b_03bn&quot;</span>);
<a name="l01729"></a>01729 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_04b_03br[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_04b_03br&quot;</span>);
<a name="l01730"></a>01730 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_04b_03[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_04b_03&quot;</span>);
<a name="l01731"></a>01731 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_04b_03n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_04b_03n&quot;</span>);
<a name="l01732"></a>01732 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_04b_03r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_04b_03r&quot;</span>);
<a name="l01733"></a>01733 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_04b_24[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_04b_24&quot;</span>);
<a name="l01734"></a>01734 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_04b_24n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_04b_24n&quot;</span>);
<a name="l01735"></a>01735 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_04b_24r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_04b_24r&quot;</span>);
<a name="l01736"></a>01736 
<a name="l01737"></a>01737 <span class="comment">/* orgdot fonts */</span>
<a name="l01738"></a>01738 
<a name="l01739"></a>01739 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_orgv01[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_orgv01&quot;</span>);
<a name="l01740"></a>01740 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_orgv01r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_orgv01r&quot;</span>);
<a name="l01741"></a>01741 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_orgv01n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_orgv01n&quot;</span>);
<a name="l01742"></a>01742 
<a name="l01743"></a>01743 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fixed_v0[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fixed_v0&quot;</span>);
<a name="l01744"></a>01744 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fixed_v0r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fixed_v0r&quot;</span>);
<a name="l01745"></a>01745 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_fixed_v0n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_fixed_v0n&quot;</span>);
<a name="l01746"></a>01746 
<a name="l01747"></a>01747 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_tpssb[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_tpssb&quot;</span>);
<a name="l01748"></a>01748 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_tpssbr[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_tpssbr&quot;</span>);
<a name="l01749"></a>01749 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_tpssbn[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_tpssbn&quot;</span>);
<a name="l01750"></a>01750 
<a name="l01751"></a>01751 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_tpss[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_tpss&quot;</span>);
<a name="l01752"></a>01752 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_tpssr[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_tpssr&quot;</span>);
<a name="l01753"></a>01753 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_tpssn[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_tpssn&quot;</span>);
<a name="l01754"></a>01754 
<a name="l01755"></a>01755 <span class="comment">/* contributed */</span>
<a name="l01756"></a>01756 
<a name="l01757"></a>01757 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_freedoomr25n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_freedoomr25n&quot;</span>);
<a name="l01758"></a>01758 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_freedoomr10r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_freedoomr10r&quot;</span>);
<a name="l01759"></a>01759 
<a name="l01760"></a>01760 <span class="comment">/* adobe X11 */</span>
<a name="l01761"></a>01761 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_courB08[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_courB08&quot;</span>);
<a name="l01762"></a>01762 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_courB08r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_courB08r&quot;</span>);
<a name="l01763"></a>01763 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_courB10[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_courB10&quot;</span>);
<a name="l01764"></a>01764 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_courB10r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_courB10r&quot;</span>);
<a name="l01765"></a>01765 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_courB12[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_courB12&quot;</span>);
<a name="l01766"></a>01766 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_courB12r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_courB12r&quot;</span>);
<a name="l01767"></a>01767 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_courB14[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_courB14&quot;</span>);
<a name="l01768"></a>01768 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_courB14r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_courB14r&quot;</span>);
<a name="l01769"></a>01769 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_courB18[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_courB18&quot;</span>);
<a name="l01770"></a>01770 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_courB18r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_courB18r&quot;</span>);
<a name="l01771"></a>01771 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_courB24[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_courB24&quot;</span>);
<a name="l01772"></a>01772 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_courB24r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_courB24r&quot;</span>);
<a name="l01773"></a>01773 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_courB24n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_courB24n&quot;</span>);
<a name="l01774"></a>01774 
<a name="l01775"></a>01775 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_courR08[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_courR08&quot;</span>);
<a name="l01776"></a>01776 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_courR08r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_courR08r&quot;</span>);
<a name="l01777"></a>01777 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_courR10[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_courR10&quot;</span>);
<a name="l01778"></a>01778 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_courR10r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_courR10r&quot;</span>);
<a name="l01779"></a>01779 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_courR12[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_courR12&quot;</span>);
<a name="l01780"></a>01780 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_courR12r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_courR12r&quot;</span>);
<a name="l01781"></a>01781 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_courR14[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_courR14&quot;</span>);
<a name="l01782"></a>01782 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_courR14r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_courR14r&quot;</span>);
<a name="l01783"></a>01783 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_courR18[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_courR18&quot;</span>);
<a name="l01784"></a>01784 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_courR18r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_courR18r&quot;</span>);
<a name="l01785"></a>01785 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_courR24[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_courR24&quot;</span>);
<a name="l01786"></a>01786 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_courR24r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_courR24r&quot;</span>);
<a name="l01787"></a>01787 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_courR24n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_courR24n&quot;</span>);
<a name="l01788"></a>01788 
<a name="l01789"></a>01789 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_helvB08[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_helvB08&quot;</span>);
<a name="l01790"></a>01790 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_helvB08r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_helvB08r&quot;</span>);
<a name="l01791"></a>01791 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_helvB10[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_helvB10&quot;</span>);
<a name="l01792"></a>01792 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_helvB10r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_helvB10r&quot;</span>);
<a name="l01793"></a>01793 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_helvB12[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_helvB12&quot;</span>);
<a name="l01794"></a>01794 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_helvB12r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_helvB12r&quot;</span>);
<a name="l01795"></a>01795 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_helvB14[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_helvB14&quot;</span>);
<a name="l01796"></a>01796 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_helvB14r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_helvB14r&quot;</span>);
<a name="l01797"></a>01797 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_helvB18[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_helvB18&quot;</span>);
<a name="l01798"></a>01798 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_helvB18r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_helvB18r&quot;</span>);
<a name="l01799"></a>01799 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_helvB24[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_helvB24&quot;</span>);
<a name="l01800"></a>01800 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_helvB24r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_helvB24r&quot;</span>);
<a name="l01801"></a>01801 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_helvB24n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_helvB24n&quot;</span>);
<a name="l01802"></a>01802 
<a name="l01803"></a>01803 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_helvR08[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_helvR08&quot;</span>);
<a name="l01804"></a>01804 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_helvR08r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_helvR08r&quot;</span>);
<a name="l01805"></a>01805 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_helvR10[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_helvR10&quot;</span>);
<a name="l01806"></a>01806 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_helvR10r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_helvR10r&quot;</span>);
<a name="l01807"></a>01807 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_helvR12[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_helvR12&quot;</span>);
<a name="l01808"></a>01808 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_helvR12r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_helvR12r&quot;</span>);
<a name="l01809"></a>01809 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_helvR14[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_helvR14&quot;</span>);
<a name="l01810"></a>01810 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_helvR14r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_helvR14r&quot;</span>);
<a name="l01811"></a>01811 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_helvR18[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_helvR18&quot;</span>);
<a name="l01812"></a>01812 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_helvR18r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_helvR18r&quot;</span>);
<a name="l01813"></a>01813 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_helvR24[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_helvR24&quot;</span>);
<a name="l01814"></a>01814 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_helvR24r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_helvR24r&quot;</span>);
<a name="l01815"></a>01815 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_helvR24n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_helvR24n&quot;</span>);
<a name="l01816"></a>01816 
<a name="l01817"></a>01817 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_ncenB08[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_ncenB08&quot;</span>);
<a name="l01818"></a>01818 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_ncenB08r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_ncenB08r&quot;</span>);
<a name="l01819"></a>01819 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_ncenB10[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_ncenB10&quot;</span>);
<a name="l01820"></a>01820 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_ncenB10r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_ncenB10r&quot;</span>);
<a name="l01821"></a>01821 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_ncenB12[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_ncenB12&quot;</span>);
<a name="l01822"></a>01822 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_ncenB12r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_ncenB12r&quot;</span>);
<a name="l01823"></a>01823 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_ncenB14[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_ncenB14&quot;</span>);
<a name="l01824"></a>01824 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_ncenB14r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_ncenB14r&quot;</span>);
<a name="l01825"></a>01825 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_ncenB18[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_ncenB18&quot;</span>);
<a name="l01826"></a>01826 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_ncenB18r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_ncenB18r&quot;</span>);
<a name="l01827"></a>01827 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_ncenB24[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_ncenB24&quot;</span>);
<a name="l01828"></a>01828 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_ncenB24r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_ncenB24r&quot;</span>);
<a name="l01829"></a>01829 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_ncenB24n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_ncenB24n&quot;</span>);
<a name="l01830"></a>01830 
<a name="l01831"></a>01831 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_ncenR08[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_ncenR08&quot;</span>);
<a name="l01832"></a>01832 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_ncenR08r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_ncenR08r&quot;</span>);
<a name="l01833"></a>01833 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_ncenR10[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_ncenR10&quot;</span>);
<a name="l01834"></a>01834 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_ncenR10r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_ncenR10r&quot;</span>);
<a name="l01835"></a>01835 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_ncenR12[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_ncenR12&quot;</span>);
<a name="l01836"></a>01836 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_ncenR12r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_ncenR12r&quot;</span>);
<a name="l01837"></a>01837 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_ncenR14[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_ncenR14&quot;</span>);
<a name="l01838"></a>01838 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_ncenR14r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_ncenR14r&quot;</span>);
<a name="l01839"></a>01839 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_ncenR18[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_ncenR18&quot;</span>);
<a name="l01840"></a>01840 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_ncenR18r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_ncenR18r&quot;</span>);
<a name="l01841"></a>01841 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_ncenR24[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_ncenR24&quot;</span>);
<a name="l01842"></a>01842 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_ncenR24r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_ncenR24r&quot;</span>);
<a name="l01843"></a>01843 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_ncenR24n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_ncenR24n&quot;</span>);
<a name="l01844"></a>01844 
<a name="l01845"></a>01845 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_symb08[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_symb08&quot;</span>);
<a name="l01846"></a>01846 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_symb08r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_symb08r&quot;</span>);
<a name="l01847"></a>01847 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_symb10[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_symb10&quot;</span>);
<a name="l01848"></a>01848 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_symb10r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_symb10r&quot;</span>);
<a name="l01849"></a>01849 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_symb12[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_symb12&quot;</span>);
<a name="l01850"></a>01850 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_symb12r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_symb12r&quot;</span>);
<a name="l01851"></a>01851 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_symb14[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_symb14&quot;</span>);
<a name="l01852"></a>01852 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_symb14r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_symb14r&quot;</span>);
<a name="l01853"></a>01853 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_symb18[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_symb18&quot;</span>);
<a name="l01854"></a>01854 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_symb18r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_symb18r&quot;</span>);
<a name="l01855"></a>01855 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_symb24[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_symb24&quot;</span>);
<a name="l01856"></a>01856 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_symb24r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_symb24r&quot;</span>);
<a name="l01857"></a>01857 
<a name="l01858"></a>01858 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_timB08[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_timB08&quot;</span>);
<a name="l01859"></a>01859 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_timB08r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_timB08r&quot;</span>);
<a name="l01860"></a>01860 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_timB10[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_timB10&quot;</span>);
<a name="l01861"></a>01861 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_timB10r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_timB10r&quot;</span>);
<a name="l01862"></a>01862 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_timB12[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_timB12&quot;</span>);
<a name="l01863"></a>01863 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_timB12r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_timB12r&quot;</span>);
<a name="l01864"></a>01864 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_timB14[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_timB14&quot;</span>);
<a name="l01865"></a>01865 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_timB14r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_timB14r&quot;</span>);
<a name="l01866"></a>01866 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_timB18[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_timB18&quot;</span>);
<a name="l01867"></a>01867 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_timB18r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_timB18r&quot;</span>);
<a name="l01868"></a>01868 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_timB24[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_timB24&quot;</span>);
<a name="l01869"></a>01869 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_timB24r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_timB24r&quot;</span>);
<a name="l01870"></a>01870 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_timB24n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_timB24n&quot;</span>);
<a name="l01871"></a>01871 
<a name="l01872"></a>01872 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_timR08[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_timR08&quot;</span>);
<a name="l01873"></a>01873 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_timR08r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_timR08r&quot;</span>);
<a name="l01874"></a>01874 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_timR10[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_timR10&quot;</span>);
<a name="l01875"></a>01875 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_timR10r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_timR10r&quot;</span>);
<a name="l01876"></a>01876 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_timR12[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_timR12&quot;</span>);
<a name="l01877"></a>01877 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_timR12r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_timR12r&quot;</span>);
<a name="l01878"></a>01878 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_timR14[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_timR14&quot;</span>);
<a name="l01879"></a>01879 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_timR14r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_timR14r&quot;</span>);
<a name="l01880"></a>01880 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_timR18[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_timR18&quot;</span>);
<a name="l01881"></a>01881 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_timR18r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_timR18r&quot;</span>);
<a name="l01882"></a>01882 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_timR24[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_timR24&quot;</span>);
<a name="l01883"></a>01883 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_timR24r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_timR24r&quot;</span>);
<a name="l01884"></a>01884 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_timR24n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_timR24n&quot;</span>);
<a name="l01885"></a>01885 
<a name="l01886"></a>01886 <span class="comment">/* fontstruct */</span>
<a name="l01887"></a>01887 
<a name="l01888"></a>01888 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_p01type[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_p01type&quot;</span>);
<a name="l01889"></a>01889 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_p01typer[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_p01typer&quot;</span>);
<a name="l01890"></a>01890 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_p01typen[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_p01typen&quot;</span>);
<a name="l01891"></a>01891 
<a name="l01892"></a>01892 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_lucasfont_alternate[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_lucasfont_alternate&quot;</span>);
<a name="l01893"></a>01893 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_lucasfont_alternater[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_lucasfont_alternater&quot;</span>);
<a name="l01894"></a>01894 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_lucasfont_alternaten[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_lucasfont_alternaten&quot;</span>);
<a name="l01895"></a>01895 
<a name="l01896"></a>01896 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_chikita[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_chikita&quot;</span>);
<a name="l01897"></a>01897 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_chikitar[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_chikitar&quot;</span>);
<a name="l01898"></a>01898 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_chikitan[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_chikitan&quot;</span>);
<a name="l01899"></a>01899 
<a name="l01900"></a>01900 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_pixelle_micro[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_pixelle_micro&quot;</span>);
<a name="l01901"></a>01901 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_pixelle_micror[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_pixelle_micror&quot;</span>);
<a name="l01902"></a>01902 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_pixelle_micron[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_pixelle_micron&quot;</span>);
<a name="l01903"></a>01903 
<a name="l01904"></a>01904 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_trixel_square[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_trixel_square&quot;</span>);
<a name="l01905"></a>01905 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_trixel_squarer[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_trixel_squarer&quot;</span>);
<a name="l01906"></a>01906 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_trixel_squaren[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_trixel_squaren&quot;</span>);
<a name="l01907"></a>01907 
<a name="l01908"></a>01908 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_robot_de_niro[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_robot_de_niro&quot;</span>);
<a name="l01909"></a>01909 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_robot_de_niror[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_robot_de_niror&quot;</span>);
<a name="l01910"></a>01910 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_robot_de_niron[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_robot_de_niron&quot;</span>);
<a name="l01911"></a>01911 
<a name="l01912"></a>01912 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_baby[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_baby&quot;</span>);
<a name="l01913"></a>01913 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_babyr[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_babyr&quot;</span>);
<a name="l01914"></a>01914 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_babyn[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_babyn&quot;</span>);
<a name="l01915"></a>01915 
<a name="l01916"></a>01916 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_blipfest_07[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_blipfest_07&quot;</span>);
<a name="l01917"></a>01917 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_blipfest_07r[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_blipfest_07r&quot;</span>);
<a name="l01918"></a>01918 <span class="keyword">extern</span> <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_blipfest_07n[] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_blipfest_07n&quot;</span>);
<a name="l01919"></a>01919 
<a name="l01920"></a>01920 
<a name="l01921"></a>01921 
<a name="l01922"></a>01922 <span class="preprocessor">#ifdef __cplusplus</span>
<a name="l01923"></a>01923 <span class="preprocessor"></span>}
<a name="l01924"></a>01924 <span class="preprocessor">#endif</span>
<a name="l01925"></a>01925 <span class="preprocessor"></span>
<a name="l01926"></a>01926 <span class="preprocessor">#endif </span><span class="comment">/* _U8G_H */</span>
<a name="l01927"></a>01927 
<a name="l01928"></a>01928 <span class="comment">/*</span>
<a name="l01929"></a>01929 <span class="comment">  Fontname: -Misc-Fixed-Medium-R-Normal--7-70-75-75-C-50-ISO10646-1</span>
<a name="l01930"></a>01930 <span class="comment">  Copyright: Public domain font.  Share and enjoy.</span>
<a name="l01931"></a>01931 <span class="comment">  Capital A Height: 6, &#39;1&#39; Height: 6</span>
<a name="l01932"></a>01932 <span class="comment">  Calculated Max Values w= 7 h= 8 x= 4 y= 5 dx= 9 dy= 0 ascent= 8 len= 8</span>
<a name="l01933"></a>01933 <span class="comment">  Font Bounding box     w= 5 h= 7 x= 0 y=-1</span>
<a name="l01934"></a>01934 <span class="comment">  Calculated Min Values           x= 0 y=-1 dx= 0 dy= 0</span>
<a name="l01935"></a>01935 <span class="comment">  Pure Font   ascent = 6 descent=-1</span>
<a name="l01936"></a>01936 <span class="comment">  X Font      ascent = 6 descent=-1</span>
<a name="l01937"></a>01937 <span class="comment">  Max Font    ascent = 8 descent=-1</span>
<a name="l01938"></a>01938 <span class="comment">*/</span>
<a name="l01939"></a>01939 <span class="keyword">const</span> u8g_fntpgm_uint8_t repetier_5x7[2405] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;repetier_5x7&quot;</span>) = {
<a name="l01940"></a>01940   0,5,7,0,255,6,2,72,3,186,0,255,255,8,255,6,
<a name="l01941"></a>01941   255,5,5,5,5,0,0,168,0,136,0,168,5,8,8,6,
<a name="l01942"></a>01942   0,0,8,8,8,40,72,248,64,32,3,3,3,6,1,4,
<a name="l01943"></a>01943   64,160,64,5,5,5,6,0,0,248,248,248,248,248,5,5,
<a name="l01944"></a>01944   5,6,0,0,248,136,136,136,248,5,8,8,6,0,0,32,
<a name="l01945"></a>01945   80,80,80,112,248,248,112,7,5,5,9,0,0,28,254,130,
<a name="l01946"></a>01946   130,254,5,8,8,6,0,0,136,80,32,136,32,80,136,136,
<a name="l01947"></a>01947   6,8,8,6,0,0,72,144,72,252,252,120,48,48,6,8,
<a name="l01948"></a>01948   8,6,0,0,36,72,36,252,252,120,48,48,6,5,5,6,
<a name="l01949"></a>01949   0,0,252,252,120,48,48,6,2,2,6,0,0,252,252,6,
<a name="l01950"></a>01950   6,6,6,0,0,72,144,72,144,252,252,6,6,6,6,0,
<a name="l01951"></a>01951   0,36,72,36,72,252,252,7,7,7,7,0,0,130,68,56,
<a name="l01952"></a>01952   40,56,68,130,7,7,7,7,0,0,16,16,56,238,56,16,
<a name="l01953"></a>01953   16,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
<a name="l01954"></a>01954   255,0,0,0,5,4,0,1,6,6,5,2,0,128,128,128,
<a name="l01955"></a>01955   128,0,128,3,3,3,5,1,3,160,160,160,5,5,5,5,
<a name="l01956"></a>01956   0,0,80,248,80,248,80,5,5,5,5,0,0,112,160,112,
<a name="l01957"></a>01957   40,112,4,6,6,5,0,0,128,144,32,64,144,16,4,5,
<a name="l01958"></a>01958   5,5,0,0,64,160,64,160,80,1,3,3,5,2,3,128,
<a name="l01959"></a>01959   128,128,2,6,6,5,1,0,64,128,128,128,128,64,2,6,
<a name="l01960"></a>01960   6,5,1,0,128,64,64,64,64,128,3,5,5,5,1,0,
<a name="l01961"></a>01961   160,64,224,64,160,5,5,5,5,0,0,32,32,248,32,32,
<a name="l01962"></a>01962   3,3,3,5,1,255,96,64,128,4,1,1,5,0,2,240,
<a name="l01963"></a>01963   2,2,2,5,1,0,192,192,4,4,4,5,0,1,16,32,
<a name="l01964"></a>01964   64,128,3,6,6,5,1,0,64,160,160,160,160,64,3,6,
<a name="l01965"></a>01965   6,5,1,0,64,192,64,64,64,224,4,6,6,5,0,0,
<a name="l01966"></a>01966   96,144,16,32,64,240,4,6,6,5,0,0,240,16,96,16,
<a name="l01967"></a>01967   144,96,4,6,6,5,0,0,32,96,160,240,32,32,4,6,
<a name="l01968"></a>01968   6,5,0,0,240,128,224,16,144,96,4,6,6,5,0,0,
<a name="l01969"></a>01969   96,128,224,144,144,96,4,6,6,5,0,0,240,16,32,32,
<a name="l01970"></a>01970   64,64,4,6,6,5,0,0,96,144,96,144,144,96,4,6,
<a name="l01971"></a>01971   6,5,0,0,96,144,144,112,16,96,2,5,5,5,1,0,
<a name="l01972"></a>01972   192,192,0,192,192,3,6,6,5,0,255,96,96,0,96,64,
<a name="l01973"></a>01973   128,3,5,5,5,1,0,32,64,128,64,32,4,3,3,5,
<a name="l01974"></a>01974   0,1,240,0,240,3,5,5,5,1,0,128,64,32,64,128,
<a name="l01975"></a>01975   3,6,6,5,1,0,64,160,32,64,0,64,4,6,6,5,
<a name="l01976"></a>01976   0,0,96,144,176,176,128,96,4,6,6,5,0,0,96,144,
<a name="l01977"></a>01977   144,240,144,144,4,6,6,5,0,0,224,144,224,144,144,224,
<a name="l01978"></a>01978   4,6,6,5,0,0,96,144,128,128,144,96,4,6,6,5,
<a name="l01979"></a>01979   0,0,224,144,144,144,144,224,4,6,6,5,0,0,240,128,
<a name="l01980"></a>01980   224,128,128,240,4,6,6,5,0,0,240,128,224,128,128,128,
<a name="l01981"></a>01981   4,6,6,5,0,0,96,144,128,176,144,112,4,6,6,5,
<a name="l01982"></a>01982   0,0,144,144,240,144,144,144,3,6,6,5,1,0,224,64,
<a name="l01983"></a>01983   64,64,64,224,4,6,6,5,0,0,16,16,16,16,144,96,
<a name="l01984"></a>01984   4,6,6,5,0,0,144,160,192,192,160,144,4,6,6,5,
<a name="l01985"></a>01985   0,0,128,128,128,128,128,240,4,6,6,5,0,0,144,240,
<a name="l01986"></a>01986   240,144,144,144,4,6,6,5,0,0,144,208,208,176,176,144,
<a name="l01987"></a>01987   4,6,6,5,0,0,96,144,144,144,144,96,4,6,6,5,
<a name="l01988"></a>01988   0,0,224,144,144,224,128,128,4,7,7,5,0,255,96,144,
<a name="l01989"></a>01989   144,144,208,96,16,4,6,6,5,0,0,224,144,144,224,160,
<a name="l01990"></a>01990   144,4,6,6,5,0,0,96,144,64,32,144,96,3,6,6,
<a name="l01991"></a>01991   5,1,0,224,64,64,64,64,64,4,6,6,5,0,0,144,
<a name="l01992"></a>01992   144,144,144,144,96,4,6,6,5,0,0,144,144,144,144,96,
<a name="l01993"></a>01993   96,4,6,6,5,0,0,144,144,144,240,240,144,4,6,6,
<a name="l01994"></a>01994   5,0,0,144,144,96,96,144,144,3,6,6,5,1,0,160,
<a name="l01995"></a>01995   160,160,64,64,64,4,6,6,5,0,0,240,16,32,64,128,
<a name="l01996"></a>01996   240,3,6,6,5,1,0,224,128,128,128,128,224,4,4,4,
<a name="l01997"></a>01997   5,0,1,128,64,32,16,3,6,6,5,1,0,224,32,32,
<a name="l01998"></a>01998   32,32,224,3,2,2,5,1,4,64,160,4,1,1,5,0,
<a name="l01999"></a>01999   0,240,2,2,2,5,1,4,128,64,4,4,4,5,0,0,
<a name="l02000"></a>02000   112,144,176,80,4,6,6,5,0,0,128,128,224,144,144,224,
<a name="l02001"></a>02001   3,4,4,5,0,0,96,128,128,96,4,6,6,5,0,0,
<a name="l02002"></a>02002   16,16,112,144,144,112,4,4,4,5,0,0,96,176,192,96,
<a name="l02003"></a>02003   4,6,6,5,0,0,32,80,64,224,64,64,4,5,5,5,
<a name="l02004"></a>02004   0,255,112,144,96,128,112,4,6,6,5,0,0,128,128,224,
<a name="l02005"></a>02005   144,144,144,3,6,6,5,1,0,64,0,192,64,64,224,3,
<a name="l02006"></a>02006   7,7,5,1,255,32,0,32,32,32,160,64,4,6,6,5,
<a name="l02007"></a>02007   0,0,128,128,160,192,160,144,3,6,6,5,1,0,192,64,
<a name="l02008"></a>02008   64,64,64,224,4,4,4,5,0,0,160,240,144,144,4,4,
<a name="l02009"></a>02009   4,5,0,0,224,144,144,144,4,4,4,5,0,0,96,144,
<a name="l02010"></a>02010   144,96,4,5,5,5,0,255,224,144,144,224,128,4,5,5,
<a name="l02011"></a>02011   5,0,255,112,144,144,112,16,4,4,4,5,0,0,224,144,
<a name="l02012"></a>02012   128,128,4,4,4,5,0,0,112,192,48,224,4,6,6,5,
<a name="l02013"></a>02013   0,0,64,64,224,64,64,48,4,4,4,5,0,0,144,144,
<a name="l02014"></a>02014   144,112,3,4,4,5,1,0,160,160,160,64,4,4,4,5,
<a name="l02015"></a>02015   0,0,144,144,240,240,4,4,4,5,0,0,144,96,96,144,
<a name="l02016"></a>02016   4,5,5,5,0,255,144,144,80,32,64,4,4,4,5,0,
<a name="l02017"></a>02017   0,240,32,64,240,3,6,6,5,1,0,32,64,192,64,64,
<a name="l02018"></a>02018   32,1,6,6,5,2,0,128,128,128,128,128,128,3,6,6,
<a name="l02019"></a>02019   5,1,0,128,64,96,64,64,128,4,2,2,5,0,4,80,
<a name="l02020"></a>02020   160,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
<a name="l02021"></a>02021   255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
<a name="l02022"></a>02022   255,255,0,0,0,5,4,0,1,6,6,5,2,0,128,0,
<a name="l02023"></a>02023   128,128,128,128,4,6,6,5,0,255,32,112,160,160,112,32,
<a name="l02024"></a>02024   4,5,5,5,0,0,48,64,224,64,176,5,5,5,5,0,
<a name="l02025"></a>02025   0,136,112,80,112,136,3,6,6,5,1,0,160,160,64,224,
<a name="l02026"></a>02026   64,64,1,5,5,5,2,0,128,128,0,128,128,3,7,7,
<a name="l02027"></a>02027   5,1,255,96,128,192,160,96,32,192,3,1,1,5,1,5,
<a name="l02028"></a>02028   160,5,7,7,5,0,255,112,136,168,200,168,136,112,3,3,
<a name="l02029"></a>02029   3,5,0,3,96,160,96,5,3,3,5,0,1,72,144,72,
<a name="l02030"></a>02030   4,2,2,5,0,1,240,16,3,1,1,5,1,2,224,5,
<a name="l02031"></a>02031   7,7,5,0,255,112,136,232,200,200,136,112,4,1,1,5,
<a name="l02032"></a>02032   0,5,240,3,3,3,5,1,3,64,160,64,5,6,6,5,
<a name="l02033"></a>02033   0,0,32,32,248,32,32,248,2,4,4,5,1,2,192,64,
<a name="l02034"></a>02034   128,192,2,4,4,5,1,2,192,192,64,192,2,2,2,5,
<a name="l02035"></a>02035   1,4,64,128,4,5,5,5,0,255,144,144,144,224,128,4,
<a name="l02036"></a>02036   6,6,5,0,0,112,208,208,80,80,80,2,2,2,5,1,
<a name="l02037"></a>02037   2,192,192,2,2,2,5,1,255,64,128,3,4,4,5,1,
<a name="l02038"></a>02038   2,64,192,64,224,3,3,3,5,0,3,64,160,64,5,3,
<a name="l02039"></a>02039   3,5,0,1,144,72,144,4,7,7,5,0,255,128,128,128,
<a name="l02040"></a>02040   144,48,112,16,4,7,7,5,0,255,128,128,128,176,16,32,
<a name="l02041"></a>02041   48,4,7,7,5,0,255,192,192,64,208,48,112,16,3,6,
<a name="l02042"></a>02042   6,5,1,0,64,0,64,128,160,64,4,6,6,5,0,0,
<a name="l02043"></a>02043   96,144,144,240,144,144,4,6,6,5,0,0,96,144,144,240,
<a name="l02044"></a>02044   144,144,4,6,6,5,0,0,96,144,144,240,144,144,4,6,
<a name="l02045"></a>02045   6,5,0,0,96,144,144,240,144,144,4,6,6,5,0,0,
<a name="l02046"></a>02046   144,96,144,240,144,144,4,6,6,5,0,0,96,96,144,240,
<a name="l02047"></a>02047   144,144,4,6,6,5,0,0,112,160,176,224,160,176,4,7,
<a name="l02048"></a>02048   7,5,0,255,96,144,128,128,144,96,64,4,6,6,5,0,
<a name="l02049"></a>02049   0,240,128,224,128,128,240,4,6,6,5,0,0,240,128,224,
<a name="l02050"></a>02050   128,128,240,4,6,6,5,0,0,240,128,224,128,128,240,4,
<a name="l02051"></a>02051   6,6,5,0,0,240,128,224,128,128,240,3,6,6,5,1,
<a name="l02052"></a>02052   0,224,64,64,64,64,224,3,6,6,5,1,0,224,64,64,
<a name="l02053"></a>02053   64,64,224,3,6,6,5,1,0,224,64,64,64,64,224,3,
<a name="l02054"></a>02054   6,6,5,1,0,224,64,64,64,64,224,4,6,6,5,0,
<a name="l02055"></a>02055   0,224,80,208,80,80,224,4,6,6,5,0,0,176,144,208,
<a name="l02056"></a>02056   176,176,144,4,6,6,5,0,0,96,144,144,144,144,96,4,
<a name="l02057"></a>02057   6,6,5,0,0,96,144,144,144,144,96,4,6,6,5,0,
<a name="l02058"></a>02058   0,96,144,144,144,144,96,4,6,6,5,0,0,96,144,144,
<a name="l02059"></a>02059   144,144,96,4,6,6,5,0,0,144,96,144,144,144,96,4,
<a name="l02060"></a>02060   4,4,5,0,0,144,96,96,144,4,6,6,5,0,0,112,
<a name="l02061"></a>02061   176,176,208,208,224,4,6,6,5,0,0,144,144,144,144,144,
<a name="l02062"></a>02062   96,4,6,6,5,0,0,144,144,144,144,144,96,4,6,6,
<a name="l02063"></a>02063   5,0,0,144,144,144,144,144,96,4,6,6,5,0,0,144,
<a name="l02064"></a>02064   0,144,144,144,96,3,6,6,5,1,0,160,160,160,64,64,
<a name="l02065"></a>02065   64,4,6,6,5,0,0,128,224,144,224,128,128,4,6,6,
<a name="l02066"></a>02066   5,0,0,96,144,160,144,144,160,4,6,6,5,0,0,64,
<a name="l02067"></a>02067   32,112,144,176,80,4,6,6,5,0,0,32,64,112,144,176,
<a name="l02068"></a>02068   80,4,6,6,5,0,0,32,80,112,144,176,80,4,6,6,
<a name="l02069"></a>02069   5,0,0,80,160,112,144,176,80,4,6,6,5,0,0,80,
<a name="l02070"></a>02070   0,112,144,176,80,4,6,6,5,0,0,96,96,112,144,176,
<a name="l02071"></a>02071   80,4,4,4,5,0,0,112,176,160,112,3,5,5,5,1,
<a name="l02072"></a>02072   255,96,128,128,96,64,4,6,6,5,0,0,64,32,96,176,
<a name="l02073"></a>02073   192,96,4,6,6,5,0,0,32,64,96,176,192,96,4,6,
<a name="l02074"></a>02074   6,5,0,0,64,160,96,176,192,96,4,6,6,5,0,0,
<a name="l02075"></a>02075   160,0,96,176,192,96,3,6,6,5,1,0,128,64,192,64,
<a name="l02076"></a>02076   64,224,3,6,6,5,1,0,64,128,192,64,64,224,3,6,
<a name="l02077"></a>02077   6,5,1,0,64,160,192,64,64,224,3,6,6,5,1,0,
<a name="l02078"></a>02078   160,0,192,64,64,224,4,6,6,5,0,0,64,48,96,144,
<a name="l02079"></a>02079   144,96,4,6,6,5,0,0,80,160,224,144,144,144,4,6,
<a name="l02080"></a>02080   6,5,0,0,64,32,96,144,144,96,4,6,6,5,0,0,
<a name="l02081"></a>02081   32,64,96,144,144,96,4,6,6,5,0,0,96,0,96,144,
<a name="l02082"></a>02082   144,96,4,6,6,5,0,0,80,160,96,144,144,96,4,6,
<a name="l02083"></a>02083   6,5,0,0,80,0,96,144,144,96,4,5,5,5,0,0,
<a name="l02084"></a>02084   96,0,240,0,96,4,4,4,5,0,0,112,176,208,224,4,
<a name="l02085"></a>02085   6,6,5,0,0,64,32,144,144,144,112,4,6,6,5,0,
<a name="l02086"></a>02086   0,32,64,144,144,144,112,4,6,6,5,0,0,96,0,144,
<a name="l02087"></a>02087   144,144,112,4,6,6,5,0,0,80,0,144,144,144,112,4,
<a name="l02088"></a>02088   7,7,5,0,255,32,64,144,144,80,32,64,4,6,6,5,
<a name="l02089"></a>02089   0,255,128,224,144,144,224,128,4,7,7,5,0,255,80,0,
<a name="l02090"></a>02090   144,144,80,32,64};
<a name="l02091"></a>02091 
<a name="l02092"></a>02092 <span class="comment">/*</span>
<a name="l02093"></a>02093 <span class="comment">  Fontname: -Misc-Fixed-Medium-R-Normal--10-100-75-75-C-60-ISO10646-1</span>
<a name="l02094"></a>02094 <span class="comment">  Copyright: Public domain terminal emulator font.  Share and enjoy.</span>
<a name="l02095"></a>02095 <span class="comment">  Capital A Height: 7, &#39;1&#39; Height: 7</span>
<a name="l02096"></a>02096 <span class="comment">  Calculated Max Values w= 7 h= 9 x= 5 y= 7 dx= 9 dy= 0 ascent= 8 len= 9</span>
<a name="l02097"></a>02097 <span class="comment">  Font Bounding box     w= 7 h=10 x= 0 y=-2</span>
<a name="l02098"></a>02098 <span class="comment">  Calculated Min Values           x= 0 y=-2 dx= 0 dy= 0</span>
<a name="l02099"></a>02099 <span class="comment">  Pure Font   ascent = 7 descent=-2</span>
<a name="l02100"></a>02100 <span class="comment">  X Font      ascent = 7 descent=-2</span>
<a name="l02101"></a>02101 <span class="comment">  Max Font    ascent = 8 descent=-2</span>
<a name="l02102"></a>02102 <span class="comment">*/</span>
<a name="l02103"></a>02103 <span class="keyword">const</span> u8g_fntpgm_uint8_t repetier_6x10[2625] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;repetier_6x10&quot;</span>) = {
<a name="l02104"></a>02104   0,7,10,0,254,7,2,105,3,251,0,255,254,8,254,7,
<a name="l02105"></a>02105   254,5,7,7,6,0,0,168,0,136,0,136,0,168,5,8,
<a name="l02106"></a>02106   8,6,0,0,8,8,8,40,72,248,64,32,3,3,3,6,
<a name="l02107"></a>02107   1,4,64,160,64,5,5,5,6,0,0,248,248,248,248,248,
<a name="l02108"></a>02108   5,5,5,6,0,0,248,136,136,136,248,5,8,8,6,0,
<a name="l02109"></a>02109   0,32,80,80,80,112,248,248,112,7,5,5,9,0,0,28,
<a name="l02110"></a>02110   254,130,130,254,5,8,8,6,0,0,136,80,32,136,32,80,
<a name="l02111"></a>02111   136,136,6,8,8,6,0,0,72,144,72,252,252,120,48,48,
<a name="l02112"></a>02112   6,8,8,6,0,0,36,72,36,252,252,120,48,48,6,5,
<a name="l02113"></a>02113   5,6,0,0,252,252,120,48,48,6,2,2,6,0,0,252,
<a name="l02114"></a>02114   252,6,6,6,6,0,0,72,144,72,144,252,252,6,6,6,
<a name="l02115"></a>02115   6,0,0,36,72,36,72,252,252,7,7,7,7,0,0,130,
<a name="l02116"></a>02116   68,56,40,56,68,130,7,7,7,7,0,0,16,16,56,238,
<a name="l02117"></a>02117   56,16,16,255,255,255,255,255,255,255,255,255,255,255,255,255,
<a name="l02118"></a>02118   255,255,255,0,0,0,6,5,255,1,7,7,6,2,0,128,
<a name="l02119"></a>02119   128,128,128,128,0,128,3,3,3,6,1,4,160,160,160,5,
<a name="l02120"></a>02120   7,7,6,0,0,80,80,248,80,248,80,80,5,7,7,6,
<a name="l02121"></a>02121   0,0,32,112,160,112,40,112,32,6,8,8,6,0,0,68,
<a name="l02122"></a>02122   164,72,16,32,72,148,136,5,7,7,6,0,0,64,160,160,
<a name="l02123"></a>02123   64,168,144,104,1,3,3,6,2,4,128,128,128,3,7,7,
<a name="l02124"></a>02124   6,1,0,32,64,128,128,128,64,32,3,7,7,6,1,0,
<a name="l02125"></a>02125   128,64,32,32,32,64,128,5,5,5,6,0,1,136,80,248,
<a name="l02126"></a>02126   80,136,5,5,5,6,0,1,32,32,248,32,32,3,3,3,
<a name="l02127"></a>02127   6,1,255,96,64,128,4,1,1,6,1,3,240,2,2,2,
<a name="l02128"></a>02128   6,1,255,192,192,5,7,7,6,0,0,8,8,16,32,64,
<a name="l02129"></a>02129   128,128,5,7,7,6,0,0,32,80,136,136,136,80,32,5,
<a name="l02130"></a>02130   7,7,6,0,0,32,96,160,32,32,32,248,5,7,7,6,
<a name="l02131"></a>02131   0,0,112,136,8,48,64,128,248,5,7,7,6,0,0,248,
<a name="l02132"></a>02132   8,16,48,8,136,112,5,7,7,6,0,0,16,48,80,144,
<a name="l02133"></a>02133   248,16,16,5,7,7,6,0,0,248,128,176,200,8,136,112,
<a name="l02134"></a>02134   5,7,7,6,0,0,48,64,128,176,200,136,112,5,7,7,
<a name="l02135"></a>02135   6,0,0,248,8,16,16,32,64,64,5,7,7,6,0,0,
<a name="l02136"></a>02136   112,136,136,112,136,136,112,5,7,7,6,0,0,112,136,152,
<a name="l02137"></a>02137   104,8,16,96,2,5,5,6,2,1,192,192,0,192,192,3,
<a name="l02138"></a>02138   7,7,6,1,255,64,224,64,0,96,64,128,4,7,7,6,
<a name="l02139"></a>02139   1,0,16,32,64,128,64,32,16,5,3,3,6,0,2,248,
<a name="l02140"></a>02140   0,248,4,7,7,6,1,0,128,64,32,16,32,64,128,5,
<a name="l02141"></a>02141   7,7,6,0,0,112,136,16,32,32,0,32,5,7,7,6,
<a name="l02142"></a>02142   0,0,112,136,152,168,176,128,112,5,7,7,6,0,0,32,
<a name="l02143"></a>02143   80,136,136,248,136,136,5,7,7,6,0,0,240,72,72,112,
<a name="l02144"></a>02144   72,72,240,5,7,7,6,0,0,112,136,128,128,128,136,112,
<a name="l02145"></a>02145   5,7,7,6,0,0,240,72,72,72,72,72,240,5,7,7,
<a name="l02146"></a>02146   6,0,0,248,128,128,240,128,128,248,5,7,7,6,0,0,
<a name="l02147"></a>02147   248,128,128,240,128,128,128,5,7,7,6,0,0,112,136,128,
<a name="l02148"></a>02148   128,152,136,112,5,7,7,6,0,0,136,136,136,248,136,136,
<a name="l02149"></a>02149   136,3,7,7,6,1,0,224,64,64,64,64,64,224,5,7,
<a name="l02150"></a>02150   7,6,0,0,56,16,16,16,16,144,96,5,7,7,6,0,
<a name="l02151"></a>02151   0,136,144,160,192,160,144,136,5,7,7,6,0,0,128,128,
<a name="l02152"></a>02152   128,128,128,128,248,5,7,7,6,0,0,136,136,216,168,136,
<a name="l02153"></a>02153   136,136,5,7,7,6,0,0,136,136,200,168,152,136,136,5,
<a name="l02154"></a>02154   7,7,6,0,0,112,136,136,136,136,136,112,5,7,7,6,
<a name="l02155"></a>02155   0,0,240,136,136,240,128,128,128,5,8,8,6,0,255,112,
<a name="l02156"></a>02156   136,136,136,136,168,112,8,5,7,7,6,0,0,240,136,136,
<a name="l02157"></a>02157   240,160,144,136,5,7,7,6,0,0,112,136,128,112,8,136,
<a name="l02158"></a>02158   112,5,7,7,6,0,0,248,32,32,32,32,32,32,5,7,
<a name="l02159"></a>02159   7,6,0,0,136,136,136,136,136,136,112,5,7,7,6,0,
<a name="l02160"></a>02160   0,136,136,136,80,80,80,32,5,7,7,6,0,0,136,136,
<a name="l02161"></a>02161   136,168,168,216,136,5,7,7,6,0,0,136,136,80,32,80,
<a name="l02162"></a>02162   136,136,5,7,7,6,0,0,136,136,80,32,32,32,32,5,
<a name="l02163"></a>02163   7,7,6,0,0,248,8,16,32,64,128,248,3,7,7,6,
<a name="l02164"></a>02164   1,0,224,128,128,128,128,128,224,5,7,7,6,0,0,128,
<a name="l02165"></a>02165   128,64,32,16,8,8,3,7,7,6,1,0,224,32,32,32,
<a name="l02166"></a>02166   32,32,224,5,3,3,6,0,4,32,80,136,5,1,1,6,
<a name="l02167"></a>02167   0,255,248,2,2,2,6,2,6,128,64,5,5,5,6,0,
<a name="l02168"></a>02168   0,112,8,120,136,120,5,7,7,6,0,0,128,128,176,200,
<a name="l02169"></a>02169   136,200,176,5,5,5,6,0,0,112,136,128,136,112,5,7,
<a name="l02170"></a>02170   7,6,0,0,8,8,104,152,136,152,104,5,5,5,6,0,
<a name="l02171"></a>02171   0,112,136,248,128,112,5,7,7,6,0,0,48,72,64,240,
<a name="l02172"></a>02172   64,64,64,5,7,7,6,0,254,120,136,136,120,8,136,112,
<a name="l02173"></a>02173   5,7,7,6,0,0,128,128,176,200,136,136,136,3,7,7,
<a name="l02174"></a>02174   6,1,0,64,0,192,64,64,64,224,4,9,9,6,1,254,
<a name="l02175"></a>02175   16,0,48,16,16,16,144,144,96,5,7,7,6,0,0,128,
<a name="l02176"></a>02176   128,136,144,224,144,136,3,7,7,6,1,0,192,64,64,64,
<a name="l02177"></a>02177   64,64,224,5,5,5,6,0,0,208,168,168,168,136,5,5,
<a name="l02178"></a>02178   5,6,0,0,176,200,136,136,136,5,5,5,6,0,0,112,
<a name="l02179"></a>02179   136,136,136,112,5,7,7,6,0,254,176,200,136,200,176,128,
<a name="l02180"></a>02180   128,5,7,7,6,0,254,104,152,136,152,104,8,8,5,5,
<a name="l02181"></a>02181   5,6,0,0,176,200,128,128,128,5,5,5,6,0,0,112,
<a name="l02182"></a>02182   128,112,8,240,5,7,7,6,0,0,64,64,240,64,64,72,
<a name="l02183"></a>02183   48,5,5,5,6,0,0,136,136,136,152,104,5,5,5,6,
<a name="l02184"></a>02184   0,0,136,136,80,80,32,5,5,5,6,0,0,136,136,168,
<a name="l02185"></a>02185   168,80,5,5,5,6,0,0,136,80,32,80,136,5,7,7,
<a name="l02186"></a>02186   6,0,254,136,136,152,104,8,136,112,5,5,5,6,0,0,
<a name="l02187"></a>02187   248,16,32,64,248,4,7,7,6,1,0,48,64,32,192,32,
<a name="l02188"></a>02188   64,48,1,7,7,6,2,0,128,128,128,128,128,128,128,4,
<a name="l02189"></a>02189   7,7,6,1,0,192,32,64,48,64,32,192,5,3,3,6,
<a name="l02190"></a>02190   0,4,72,168,144,255,255,255,255,255,255,255,255,255,255,255,
<a name="l02191"></a>02191   255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
<a name="l02192"></a>02192   255,255,255,255,255,255,255,1,7,7,6,2,0,128,0,128,
<a name="l02193"></a>02193   128,128,128,128,5,7,7,6,0,255,32,120,160,160,160,120,
<a name="l02194"></a>02194   32,5,7,7,6,0,0,48,72,64,224,64,72,176,5,5,
<a name="l02195"></a>02195   5,6,0,0,136,112,80,112,136,5,8,8,6,0,255,136,
<a name="l02196"></a>02196   136,80,32,248,32,32,32,1,7,7,6,2,0,128,128,128,
<a name="l02197"></a>02197   0,128,128,128,5,8,8,6,0,255,112,128,224,144,72,56,
<a name="l02198"></a>02198   8,112,3,1,1,6,1,7,160,5,7,7,6,0,0,112,
<a name="l02199"></a>02199   136,168,200,168,136,112,4,6,6,6,1,1,112,144,176,80,
<a name="l02200"></a>02200   0,240,6,5,5,6,0,0,36,72,144,72,36,4,2,2,
<a name="l02201"></a>02201   6,1,2,240,16,255,5,7,7,6,0,0,112,136,232,200,
<a name="l02202"></a>02202   200,136,112,5,1,1,6,0,7,248,3,3,3,6,1,4,
<a name="l02203"></a>02203   64,160,64,5,6,6,6,0,0,32,32,248,32,32,248,4,
<a name="l02204"></a>02204   5,5,6,1,3,96,144,32,64,240,4,5,5,6,1,3,
<a name="l02205"></a>02205   224,16,96,16,224,2,2,2,6,2,6,64,128,255,5,7,
<a name="l02206"></a>02206   7,6,0,0,120,232,232,104,40,40,40,1,1,1,6,2,
<a name="l02207"></a>02207   3,128,2,2,2,6,2,254,64,128,3,5,5,6,1,3,
<a name="l02208"></a>02208   64,192,64,64,224,4,6,6,6,1,1,96,144,144,96,0,
<a name="l02209"></a>02209   240,6,5,5,6,0,0,144,72,36,72,144,6,9,9,6,
<a name="l02210"></a>02210   0,255,64,192,64,64,228,12,20,60,4,6,9,9,6,0,
<a name="l02211"></a>02211   255,64,192,64,64,232,20,4,8,28,5,9,9,6,0,255,
<a name="l02212"></a>02212   192,32,64,32,200,24,40,120,8,5,7,7,6,0,0,32,
<a name="l02213"></a>02213   0,32,32,64,136,112,5,8,8,6,0,0,64,32,112,136,
<a name="l02214"></a>02214   136,248,136,136,5,8,8,6,0,0,16,32,112,136,136,248,
<a name="l02215"></a>02215   136,136,5,8,8,6,0,0,32,80,112,136,136,248,136,136,
<a name="l02216"></a>02216   5,8,8,6,0,0,72,176,112,136,136,248,136,136,5,8,
<a name="l02217"></a>02217   8,6,0,0,80,0,112,136,136,248,136,136,5,8,8,6,
<a name="l02218"></a>02218   0,0,32,80,112,136,136,248,136,136,6,7,7,6,0,0,
<a name="l02219"></a>02219   60,80,144,156,240,144,156,5,9,9,6,0,254,112,136,128,
<a name="l02220"></a>02220   128,128,136,112,32,64,5,8,8,6,0,0,64,248,128,128,
<a name="l02221"></a>02221   240,128,128,248,5,8,8,6,0,0,16,248,128,128,240,128,
<a name="l02222"></a>02222   128,248,5,8,8,6,0,0,32,248,128,128,240,128,128,248,
<a name="l02223"></a>02223   5,8,8,6,0,0,80,248,128,128,240,128,128,248,3,8,
<a name="l02224"></a>02224   8,6,1,0,128,64,224,64,64,64,64,224,3,8,8,6,
<a name="l02225"></a>02225   1,0,32,64,224,64,64,64,64,224,3,8,8,6,1,0,
<a name="l02226"></a>02226   64,160,224,64,64,64,64,224,3,8,8,6,1,0,160,0,
<a name="l02227"></a>02227   224,64,64,64,64,224,5,7,7,6,0,0,240,72,72,232,
<a name="l02228"></a>02228   72,72,240,5,8,8,6,0,0,40,80,136,200,168,152,136,
<a name="l02229"></a>02229   136,5,8,8,6,0,0,64,32,112,136,136,136,136,112,5,
<a name="l02230"></a>02230   8,8,6,0,0,16,32,112,136,136,136,136,112,5,8,8,
<a name="l02231"></a>02231   6,0,0,32,80,112,136,136,136,136,112,5,8,8,6,0,
<a name="l02232"></a>02232   0,40,80,112,136,136,136,136,112,5,8,8,6,0,0,80,
<a name="l02233"></a>02233   0,112,136,136,136,136,112,5,5,5,6,0,0,136,80,32,
<a name="l02234"></a>02234   80,136,5,7,7,6,0,0,112,152,152,168,200,200,112,5,
<a name="l02235"></a>02235   8,8,6,0,0,64,32,136,136,136,136,136,112,5,8,8,
<a name="l02236"></a>02236   6,0,0,16,32,136,136,136,136,136,112,5,8,8,6,0,
<a name="l02237"></a>02237   0,32,80,0,136,136,136,136,112,5,8,8,6,0,0,80,
<a name="l02238"></a>02238   0,136,136,136,136,136,112,5,8,8,6,0,0,16,32,136,
<a name="l02239"></a>02239   136,80,32,32,32,5,7,7,6,0,0,128,240,136,240,128,
<a name="l02240"></a>02240   128,128,5,7,7,6,0,0,112,136,144,160,144,136,176,5,
<a name="l02241"></a>02241   8,8,6,0,0,64,32,0,112,8,120,136,120,5,8,8,
<a name="l02242"></a>02242   6,0,0,16,32,0,112,8,120,136,120,5,8,8,6,0,
<a name="l02243"></a>02243   0,32,80,0,112,8,120,136,120,5,8,8,6,0,0,40,
<a name="l02244"></a>02244   80,0,112,8,120,136,120,5,7,7,6,0,0,80,0,112,
<a name="l02245"></a>02245   8,120,136,120,5,8,8,6,0,0,32,80,32,112,8,120,
<a name="l02246"></a>02246   136,120,6,5,5,6,0,0,120,20,124,144,124,5,7,7,
<a name="l02247"></a>02247   6,0,254,112,136,128,136,112,32,64,5,8,8,6,0,0,
<a name="l02248"></a>02248   64,32,0,112,136,248,128,112,5,8,8,6,0,0,16,32,
<a name="l02249"></a>02249   0,112,136,248,128,112,5,8,8,6,0,0,32,80,0,112,
<a name="l02250"></a>02250   136,248,128,112,5,7,7,6,0,0,80,0,112,136,248,128,
<a name="l02251"></a>02251   112,3,8,8,6,1,0,128,64,0,192,64,64,64,224,3,
<a name="l02252"></a>02252   8,8,6,1,0,64,128,0,192,64,64,64,224,3,8,8,
<a name="l02253"></a>02253   6,1,0,64,160,0,192,64,64,64,224,3,7,7,6,1,
<a name="l02254"></a>02254   0,160,0,192,64,64,64,224,5,7,7,6,0,0,192,48,
<a name="l02255"></a>02255   112,136,136,136,112,5,8,8,6,0,0,40,80,0,176,200,
<a name="l02256"></a>02256   136,136,136,5,8,8,6,0,0,64,32,0,112,136,136,136,
<a name="l02257"></a>02257   112,5,8,8,6,0,0,16,32,0,112,136,136,136,112,5,
<a name="l02258"></a>02258   8,8,6,0,0,32,80,0,112,136,136,136,112,5,8,8,
<a name="l02259"></a>02259   6,0,0,40,80,0,112,136,136,136,112,5,7,7,6,0,
<a name="l02260"></a>02260   0,80,0,112,136,136,136,112,5,5,5,6,0,1,32,0,
<a name="l02261"></a>02261   248,0,32,5,5,5,6,0,0,120,152,168,200,240,5,8,
<a name="l02262"></a>02262   8,6,0,0,64,32,0,136,136,136,152,104,5,8,8,6,
<a name="l02263"></a>02263   0,0,16,32,0,136,136,136,152,104,5,8,8,6,0,0,
<a name="l02264"></a>02264   32,80,0,136,136,136,152,104,5,7,7,6,0,0,80,0,
<a name="l02265"></a>02265   136,136,136,152,104,5,9,9,6,0,254,16,32,136,136,152,
<a name="l02266"></a>02266   104,8,136,112,5,8,8,6,0,254,128,240,136,136,136,240,
<a name="l02267"></a>02267   128,128,5,9,9,6,0,254,80,0,136,136,152,104,8,136,
<a name="l02268"></a>02268   112};
<a name="l02269"></a>02269 <span class="comment">/*</span>
<a name="l02270"></a>02270 <span class="comment">  Fontname: -Misc-Fixed-Medium-R-SemiCondensed--12-110-75-75-C-60-ISO10646-1</span>
<a name="l02271"></a>02271 <span class="comment">  Copyright: Public domain terminal emulator font.  Share and enjoy.</span>
<a name="l02272"></a>02272 <span class="comment">  Capital A Height: 3, &#39;1&#39; Height: 8</span>
<a name="l02273"></a>02273 <span class="comment">  Calculated Max Values w= 6 h=12 x= 5 y= 8 dx= 6 dy= 0 ascent=10 len=12</span>
<a name="l02274"></a>02274 <span class="comment">  Font Bounding box     w= 6 h=12 x= 0 y=-2</span>
<a name="l02275"></a>02275 <span class="comment">  Calculated Min Values           x= 0 y=-2 dx= 0 dy= 0</span>
<a name="l02276"></a>02276 <span class="comment">  Pure Font   ascent = 3 descent= 0</span>
<a name="l02277"></a>02277 <span class="comment">  X Font      ascent = 8 descent= 0</span>
<a name="l02278"></a>02278 <span class="comment">  Max Font    ascent =10 descent=-2</span>
<a name="l02279"></a>02279 <span class="comment">*/</span>
<a name="l02280"></a>02280 <span class="keyword">const</span> u8g_fntpgm_uint8_t u8g_font_6x12_67_75[2382] <a class="code" href="u8glib__ex_8h.html#a06c2b7cec8bfa30c6c36076f8db3de30">U8G_FONT_SECTION</a>(<span class="stringliteral">&quot;u8g_font_6x12_67_75&quot;</span>) = {
<a name="l02281"></a>02281   1,6,12,0,254,3,2,41,3,99,0,255,0,10,254,8,
<a name="l02282"></a>02282   0,2,87,103,168,0,136,0,136,0,168,2,87,103,240,136,
<a name="l02283"></a>02283   232,168,232,136,240,2,87,103,112,168,248,168,248,168,112,2,
<a name="l02284"></a>02284   87,103,112,136,8,8,8,136,112,18,69,101,96,144,16,144,
<a name="l02285"></a>02285   96,1,88,104,112,136,128,128,136,120,8,8,2,87,103,32,
<a name="l02286"></a>02286   32,32,32,168,112,32,2,103,103,248,252,252,156,252,252,248,
<a name="l02287"></a>02287   2,87,103,112,248,248,168,248,248,112,255,255,255,255,255,255,
<a name="l02288"></a>02288   255,3,85,101,32,64,248,64,32,2,87,103,32,112,168,32,
<a name="l02289"></a>02289   32,32,32,3,85,101,32,16,248,16,32,2,87,103,32,32,
<a name="l02290"></a>02290   32,32,168,112,32,4,83,99,80,248,80,2,87,103,32,112,
<a name="l02291"></a>02291   168,32,168,112,32,2,89,105,192,240,224,160,32,16,16,8,
<a name="l02292"></a>02292   8,2,89,105,24,120,56,40,32,64,64,128,128,2,89,105,
<a name="l02293"></a>02293   128,128,64,64,32,40,56,120,24,2,89,105,8,8,16,16,
<a name="l02294"></a>02294   32,160,224,240,192,3,101,101,40,72,252,80,48,3,101,101,
<a name="l02295"></a>02295   48,40,252,72,80,4,99,99,192,216,100,4,99,99,12,108,
<a name="l02296"></a>02296   152,3,101,101,40,80,252,80,40,2,88,104,32,112,168,112,
<a name="l02297"></a>02297   168,32,32,32,3,101,101,80,40,252,40,80,2,88,104,32,
<a name="l02298"></a>02298   32,32,168,112,168,112,32,3,101,101,36,72,240,72,36,3,
<a name="l02299"></a>02299   101,101,144,72,60,72,144,3,85,101,40,72,248,72,40,2,
<a name="l02300"></a>02300   87,103,32,112,168,32,32,32,248,3,85,101,160,144,248,144,
<a name="l02301"></a>02301   160,2,87,103,248,32,32,32,168,112,32,2,87,103,32,112,
<a name="l02302"></a>02302   168,32,168,112,248,3,101,101,40,68,248,64,32,3,101,101,
<a name="l02303"></a>02303   80,136,124,8,16,3,101,101,32,76,252,72,40,3,101,101,
<a name="l02304"></a>02304   16,200,252,72,80,3,100,100,72,220,236,72,3,101,101,8,
<a name="l02305"></a>02305   88,252,104,64,2,87,103,128,144,176,208,144,56,16,2,88,
<a name="l02306"></a>02306   104,32,64,248,72,40,8,8,8,2,88,104,32,16,248,144,
<a name="l02307"></a>02307   160,128,128,128,2,88,104,8,8,8,40,72,248,64,32,2,
<a name="l02308"></a>02308   87,103,128,128,160,144,248,16,32,3,84,100,240,16,56,16,
<a name="l02309"></a>02309   3,85,101,8,8,72,248,64,3,85,101,48,72,72,232,72,
<a name="l02310"></a>02310   3,85,101,96,144,144,184,16,2,88,104,248,128,224,192,160,
<a name="l02311"></a>02311   32,16,16,2,89,105,160,192,248,192,168,24,248,24,40,2,
<a name="l02312"></a>02312   86,102,56,48,168,136,136,112,2,86,102,224,96,168,136,136,
<a name="l02313"></a>02313   112,5,83,99,32,64,248,3,83,99,248,64,32,34,56,104,
<a name="l02314"></a>02314   128,192,160,128,128,128,128,128,2,56,104,32,96,160,32,32,
<a name="l02315"></a>02315   32,32,32,5,83,99,32,16,248,3,83,99,248,16,32,34,
<a name="l02316"></a>02316   56,104,128,128,128,128,128,160,192,128,2,56,104,32,32,32,
<a name="l02317"></a>02317   32,32,160,96,32,2,89,105,32,16,248,16,32,64,248,64,
<a name="l02318"></a>02318   32,2,88,104,80,240,80,80,80,80,120,80,2,89,105,32,
<a name="l02319"></a>02319   64,248,64,32,16,248,16,32,2,89,105,32,64,248,64,32,
<a name="l02320"></a>02320   64,248,64,32,2,88,104,80,248,80,80,80,80,80,80,2,
<a name="l02321"></a>02321   89,105,32,16,248,16,32,16,248,16,32,2,88,104,80,80,
<a name="l02322"></a>02322   80,80,80,80,248,80,2,87,103,32,64,248,0,248,16,32,
<a name="l02323"></a>02323   2,87,103,32,16,248,0,248,64,32,2,103,103,20,40,124,
<a name="l02324"></a>02324   144,124,32,80,2,103,103,8,88,252,164,252,104,64,2,103,
<a name="l02325"></a>02325   103,160,80,248,36,248,16,40,3,85,101,32,120,128,120,32,
<a name="l02326"></a>02326   2,87,103,32,80,216,80,80,80,80,3,85,101,32,240,8,
<a name="l02327"></a>02327   240,32,2,87,103,80,80,80,80,216,80,32,3,101,101,72,
<a name="l02328"></a>02328   252,132,252,72,2,88,104,32,80,216,80,80,216,80,32,2,
<a name="l02329"></a>02329   102,102,248,160,208,168,148,8,2,102,102,124,20,44,84,164,
<a name="l02330"></a>02330   64,2,102,102,64,164,84,44,20,124,2,102,102,8,148,168,
<a name="l02331"></a>02331   208,160,248,2,103,103,16,60,64,252,64,60,16,2,103,103,
<a name="l02332"></a>02332   32,240,8,252,8,240,32,3,100,100,64,232,212,64,3,100,
<a name="l02333"></a>02333   100,8,92,172,8,2,88,104,32,112,168,32,112,32,112,32,
<a name="l02334"></a>02334   2,88,104,32,112,32,112,32,168,112,32,3,101,101,32,64,
<a name="l02335"></a>02335   212,64,32,2,88,104,32,112,136,32,0,32,0,32,3,101,
<a name="l02336"></a>02336   101,16,8,172,8,16,2,88,104,32,0,32,0,32,136,112,
<a name="l02337"></a>02337   32,3,85,101,160,192,248,192,160,3,85,101,40,24,248,24,
<a name="l02338"></a>02338   40,3,85,101,32,120,136,120,32,2,88,104,32,80,216,80,
<a name="l02339"></a>02339   80,80,80,112,3,85,101,32,240,136,240,32,2,88,104,112,
<a name="l02340"></a>02340   80,80,80,80,216,80,32,2,89,105,32,80,216,80,112,0,
<a name="l02341"></a>02341   112,80,112,2,89,105,32,80,216,80,80,80,216,136,248,2,
<a name="l02342"></a>02342   89,105,32,80,248,136,80,80,216,136,248,2,89,105,32,112,
<a name="l02343"></a>02343   248,112,112,112,248,168,248,2,89,105,32,80,216,80,216,80,
<a name="l02344"></a>02344   80,80,112,2,89,105,32,80,216,80,216,80,216,136,248,3,
<a name="l02345"></a>02345   85,101,160,240,136,240,160,2,88,104,248,128,176,160,144,16,
<a name="l02346"></a>02346   8,8,2,88,104,128,128,64,72,40,104,8,248,2,88,104,
<a name="l02347"></a>02347   32,80,216,80,80,216,80,32,3,101,101,16,104,252,104,16,
<a name="l02348"></a>02348   2,88,104,80,120,80,80,80,80,240,80,2,89,105,16,248,
<a name="l02349"></a>02349   16,16,248,16,16,248,16,3,101,101,40,72,252,72,40,3,
<a name="l02350"></a>02350   101,101,80,72,252,72,80,3,101,101,48,120,252,120,48,3,
<a name="l02351"></a>02351   101,101,56,88,252,88,56,3,101,101,112,104,252,104,112,3,
<a name="l02352"></a>02352   101,101,48,120,252,120,48,3,85,101,32,96,184,96,32,3,
<a name="l02353"></a>02353   85,101,32,48,232,48,32,3,101,101,48,120,180,120,48,6,
<a name="l02354"></a>02354   102,102,252,252,252,252,252,252,0,98,98,252,252,0,99,99,
<a name="l02355"></a>02355   252,252,252,0,101,101,252,252,252,252,252,0,102,102,252,252,
<a name="l02356"></a>02356   252,252,252,252,0,104,104,252,252,252,252,252,252,252,252,0,
<a name="l02357"></a>02357   105,105,252,252,252,252,252,252,252,252,252,0,107,107,252,252,
<a name="l02358"></a>02358   252,252,252,252,252,252,252,252,252,0,108,108,252,252,252,252,
<a name="l02359"></a>02359   252,252,252,252,252,252,252,252,0,92,108,248,248,248,248,248,
<a name="l02360"></a>02360   248,248,248,248,248,248,248,0,76,108,240,240,240,240,240,240,
<a name="l02361"></a>02361   240,240,240,240,240,240,0,76,108,240,240,240,240,240,240,240,
<a name="l02362"></a>02362   240,240,240,240,240,0,60,108,224,224,224,224,224,224,224,224,
<a name="l02363"></a>02363   224,224,224,224,0,44,108,192,192,192,192,192,192,192,192,192,
<a name="l02364"></a>02364   192,192,192,0,44,108,192,192,192,192,192,192,192,192,192,192,
<a name="l02365"></a>02365   192,192,0,28,108,128,128,128,128,128,128,128,128,128,128,128,
<a name="l02366"></a>02366   128,48,60,108,224,224,224,224,224,224,224,224,224,224,224,224,
<a name="l02367"></a>02367   1,107,107,168,0,84,0,168,0,84,0,168,0,84,0,108,
<a name="l02368"></a>02368   108,168,84,168,84,168,84,168,84,168,84,168,84,0,108,108,
<a name="l02369"></a>02369   84,252,168,252,84,252,168,252,84,252,168,252,10,98,98,252,
<a name="l02370"></a>02370   252,80,28,108,128,128,128,128,128,128,128,128,128,128,128,128,
<a name="l02371"></a>02371   0,54,102,224,224,224,224,224,224,48,54,102,224,224,224,224,
<a name="l02372"></a>02372   224,224,6,54,102,224,224,224,224,224,224,0,108,108,224,224,
<a name="l02373"></a>02373   224,224,224,224,252,252,252,252,252,252,0,108,108,224,224,224,
<a name="l02374"></a>02374   224,224,224,28,28,28,28,28,28,0,108,108,252,252,252,252,
<a name="l02375"></a>02375   252,252,224,224,224,224,224,224,0,108,108,252,252,252,252,252,
<a name="l02376"></a>02376   252,28,28,28,28,28,28,54,54,102,224,224,224,224,224,224,
<a name="l02377"></a>02377   0,108,108,28,28,28,28,28,28,224,224,224,224,224,224,0,
<a name="l02378"></a>02378   108,108,28,28,28,28,28,28,252,252,252,252,252,252,2,85,
<a name="l02379"></a>02379   101,248,248,248,248,248,2,85,101,248,136,136,136,248,2,85,
<a name="l02380"></a>02380   101,112,136,136,136,112,2,85,101,248,136,168,136,248,2,85,
<a name="l02381"></a>02381   101,248,136,248,136,248,2,85,101,248,168,168,168,248,2,85,
<a name="l02382"></a>02382   101,248,168,248,168,248,2,85,101,248,200,168,152,248,2,85,
<a name="l02383"></a>02383   101,248,152,168,200,248,2,85,101,248,216,168,216,248,20,51,
<a name="l02384"></a>02384   99,224,224,224,20,51,99,224,160,224,3,101,101,252,252,252,
<a name="l02385"></a>02385   252,252,3,101,101,252,132,132,132,252,17,74,106,240,240,240,
<a name="l02386"></a>02386   240,240,240,240,240,240,240,17,74,106,240,144,144,144,144,144,
<a name="l02387"></a>02387   144,144,144,240,4,99,99,60,120,240,4,99,99,60,72,240,
<a name="l02388"></a>02388   2,87,103,32,32,112,112,248,248,248,2,87,103,32,32,80,
<a name="l02389"></a>02389   80,136,136,248,3,85,101,32,32,112,112,248,3,85,101,32,
<a name="l02390"></a>02390   32,80,80,248,18,71,103,128,192,224,240,224,192,128,18,71,
<a name="l02391"></a>02391   103,128,192,160,144,160,192,128,19,53,101,128,192,224,192,128,
<a name="l02392"></a>02392   19,53,101,128,192,160,192,128,3,101,101,192,240,252,240,192,
<a name="l02393"></a>02393   3,101,101,192,176,140,176,192,2,87,103,248,248,248,112,112,
<a name="l02394"></a>02394   32,32,2,87,103,248,136,136,80,80,32,32,2,85,101,248,
<a name="l02395"></a>02395   112,112,32,32,2,85,101,248,80,80,32,32,18,71,103,16,
<a name="l02396"></a>02396   48,112,240,112,48,16,18,71,103,16,48,80,144,80,48,16,
<a name="l02397"></a>02397   19,53,101,32,96,224,96,32,19,53,101,32,96,160,96,32,
<a name="l02398"></a>02398   3,101,101,12,60,252,60,12,3,101,101,12,52,196,52,12,
<a name="l02399"></a>02399   3,85,101,32,112,248,112,32,3,85,101,32,80,136,80,32,
<a name="l02400"></a>02400   3,85,101,32,80,168,80,32,2,102,102,48,72,180,180,72,
<a name="l02401"></a>02401   48,2,87,103,32,80,80,136,80,80,32,2,102,102,48,72,
<a name="l02402"></a>02402   132,132,72,48,2,102,102,32,8,128,4,64,16,2,85,101,
<a name="l02403"></a>02403   112,168,168,168,112,2,87,103,112,136,168,216,168,136,112,2,
<a name="l02404"></a>02404   102,102,48,120,252,252,120,48,2,102,102,48,104,228,228,104,
<a name="l02405"></a>02405   48,2,102,102,48,88,156,156,88,48,2,102,102,48,72,132,
<a name="l02406"></a>02406   252,120,48,2,102,102,48,120,252,132,72,48,2,102,102,48,
<a name="l02407"></a>02407   88,156,132,72,48,2,102,102,48,104,228,132,72,48,18,89,
<a name="l02408"></a>02408   105,8,56,120,120,248,120,120,56,8,2,89,105,128,224,240,
<a name="l02409"></a>02409   240,248,240,240,224,128,0,108,108,252,252,252,252,204,132,132,
<a name="l02410"></a>02410   204,252,252,252,252,0,108,108,252,252,252,204,180,120,120,180,
<a name="l02411"></a>02411   204,252,252,252,6,102,102,252,252,252,204,180,120,0,102,102,
<a name="l02412"></a>02412   120,180,204,252,252,252,5,51,99,32,64,128,53,51,99,128,
<a name="l02413"></a>02413   64,32,50,51,99,32,64,128,2,51,99,128,64,32,5,99,
<a name="l02414"></a>02414   99,48,72,132,2,99,99,132,72,48,2,85,101,8,24,56,
<a name="l02415"></a>02415   120,248,2,85,101,128,192,224,240,248,2,85,101,248,240,224,
<a name="l02416"></a>02416   192,128,2,85,101,248,120,56,24,8,2,85,101,112,136,136,
<a name="l02417"></a>02417   136,112,2,85,101,248,232,232,232,248,2,85,101,248,184,184,
<a name="l02418"></a>02418   184,248,2,85,101,248,248,232,200,248,2,85,101,248,152,184,
<a name="l02419"></a>02419   248,248,2,85,101,248,168,168,168,248,2,87,103,32,32,80,
<a name="l02420"></a>02420   112,168,136,248,2,87,103,32,32,112,112,232,232,248,2,87,
<a name="l02421"></a>02421   103,32,32,112,112,184,184,248,2,103,103,48,72,132,132,132,
<a name="l02422"></a>02422   72,48,2,85,101,248,168,232,136,248,2,85,101,248,136,232,
<a name="l02423"></a>02423   168,248,2,85,101,248,136,184,168,248,2,85,101,248,168,184,
<a name="l02424"></a>02424   136,248,2,85,101,112,168,232,136,112,2,85,101,112,136,232,
<a name="l02425"></a>02425   168,112,2,85,101,112,136,184,168,112,2,85,101,112,168,184,
<a name="l02426"></a>02426   136,112,3,85,101,248,144,160,192,128,3,85,101,248,72,40,
<a name="l02427"></a>02427   24,8,3,85,101,128,192,160,144,248,20,68,100,240,144,144,
<a name="l02428"></a>02428   240,19,68,100,240,240,240,240,20,68,100,240,144,144,240,20,
<a name="l02429"></a>02429   68,100,240,240,240,240,3,85,101,8,24,40,72,248};
<a name="l02430"></a>02430 <span class="comment">// ======== u8g_dev_st7920_128x64.c ==============</span>
<a name="l02431"></a>02431 
<a name="l02432"></a>02432 <span class="comment">/*</span>
<a name="l02433"></a>02433 <span class="comment"></span>
<a name="l02434"></a>02434 <span class="comment">  u8g_dev_st7920_128x64.c</span>
<a name="l02435"></a>02435 <span class="comment"></span>
<a name="l02436"></a>02436 <span class="comment">  Universal 8bit Graphics Library</span>
<a name="l02437"></a>02437 <span class="comment"></span>
<a name="l02438"></a>02438 <span class="comment">  Copyright (c) 2011, olikraus@gmail.com</span>
<a name="l02439"></a>02439 <span class="comment">  All rights reserved.</span>
<a name="l02440"></a>02440 <span class="comment"></span>
<a name="l02441"></a>02441 <span class="comment">  Redistribution and use in source and binary forms, with or without modification,</span>
<a name="l02442"></a>02442 <span class="comment">  are permitted provided that the following conditions are met:</span>
<a name="l02443"></a>02443 <span class="comment"></span>
<a name="l02444"></a>02444 <span class="comment">  * Redistributions of source code must retain the above copyright notice, this list</span>
<a name="l02445"></a>02445 <span class="comment">    of conditions and the following disclaimer.</span>
<a name="l02446"></a>02446 <span class="comment"></span>
<a name="l02447"></a>02447 <span class="comment">  * Redistributions in binary form must reproduce the above copyright notice, this</span>
<a name="l02448"></a>02448 <span class="comment">    list of conditions and the following disclaimer in the documentation and/or other</span>
<a name="l02449"></a>02449 <span class="comment">    materials provided with the distribution.</span>
<a name="l02450"></a>02450 <span class="comment"></span>
<a name="l02451"></a>02451 <span class="comment">  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND</span>
<a name="l02452"></a>02452 <span class="comment">  CONTRIBUTORS &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES,</span>
<a name="l02453"></a>02453 <span class="comment">  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF</span>
<a name="l02454"></a>02454 <span class="comment">  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span>
<a name="l02455"></a>02455 <span class="comment">  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR</span>
<a name="l02456"></a>02456 <span class="comment">  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</span>
<a name="l02457"></a>02457 <span class="comment">  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT</span>
<a name="l02458"></a>02458 <span class="comment">  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span>
<a name="l02459"></a>02459 <span class="comment">  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span>
<a name="l02460"></a>02460 <span class="comment">  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,</span>
<a name="l02461"></a>02461 <span class="comment">  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span>
<a name="l02462"></a>02462 <span class="comment">  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF</span>
<a name="l02463"></a>02463 <span class="comment">  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span>
<a name="l02464"></a>02464 <span class="comment"></span>
<a name="l02465"></a>02465 <span class="comment"></span>
<a name="l02466"></a>02466 <span class="comment">*/</span>
<a name="l02467"></a>02467 
<a name="l02468"></a>02468 
<a name="l02469"></a><a class="code" href="u8glib__ex_8h.html#a241aeeb764887ae5e3de58b98f04b16d">02469</a> <span class="preprocessor">#define WIDTH 128</span>
<a name="l02470"></a><a class="code" href="u8glib__ex_8h.html#aed89bd71aee8be823e8a20ec4e093c1e">02470</a> <span class="preprocessor"></span><span class="preprocessor">#define HEIGHT 64</span>
<a name="l02471"></a><a class="code" href="u8glib__ex_8h.html#a4008f07d33bd4a68ec766aab590f293b">02471</a> <span class="preprocessor"></span><span class="preprocessor">#define PAGE_HEIGHT 8</span>
<a name="l02472"></a>02472 <span class="preprocessor"></span>
<a name="l02473"></a>02473 
<a name="l02474"></a>02474 <span class="comment">/* init sequence from https://github.com/adafruit/ST7565-LCD/blob/master/ST7565/ST7565.cpp */</span>
<a name="l02475"></a><a class="code" href="u8glib__ex_8h.html#accd285e1b7f94ad6a8bc410d5f216aad">02475</a> <span class="keyword">static</span> <span class="keyword">const</span> uint8_t u8g_dev_st7920_128x64_init_seq[] <a class="code" href="u8glib__ex_8h.html#a75acaba9e781937468d0911423bc0c35">PROGMEM</a> = {
<a name="l02476"></a>02476   <a class="code" href="u8glib__ex_8h.html#ab44712ce2ec80eb205f1e3b8ba1f8f1a">U8G_ESC_CS</a>(0),             <span class="comment">/* disable chip */</span>
<a name="l02477"></a>02477   <a class="code" href="u8glib__ex_8h.html#a3294b2396ce0c13eb8bbe52f0e93cbe4">U8G_ESC_ADR</a>(0),           <span class="comment">/* instruction mode */</span>
<a name="l02478"></a>02478   <a class="code" href="u8glib__ex_8h.html#aa7e73814dc839d642bdfc26bb425797e">U8G_ESC_RST</a>(15),           <span class="comment">/* do reset low pulse with (15*16)+2 milliseconds (=maximum delay)*/</span>
<a name="l02479"></a>02479   <a class="code" href="u8glib__ex_8h.html#ab21005f571adc78cec66b3d889f9e871">U8G_ESC_DLY</a>(100),         <span class="comment">/* 8 Dez 2012: additional delay 100 ms because of reset*/</span>
<a name="l02480"></a>02480   <a class="code" href="u8glib__ex_8h.html#ab44712ce2ec80eb205f1e3b8ba1f8f1a">U8G_ESC_CS</a>(1),             <span class="comment">/* enable chip */</span>
<a name="l02481"></a>02481   <a class="code" href="u8glib__ex_8h.html#ab21005f571adc78cec66b3d889f9e871">U8G_ESC_DLY</a>(50),         <span class="comment">/* delay 50 ms */</span>
<a name="l02482"></a>02482 
<a name="l02483"></a>02483   0x038,                                <span class="comment">/* 8 Bit interface (DL=1), basic instruction set (RE=0) */</span>
<a name="l02484"></a>02484   0x00c,                                <span class="comment">/* display on, cursor &amp; blink off; 0x08: all off */</span>
<a name="l02485"></a>02485   0x006,                                <span class="comment">/* Entry mode: Cursor move to right ,DDRAM address counter (AC) plus 1, no shift */</span>
<a name="l02486"></a>02486   0x002,                                <span class="comment">/* disable scroll, enable CGRAM adress */</span>
<a name="l02487"></a>02487   0x001,                                <span class="comment">/* clear RAM, needs 1.6 ms */</span>
<a name="l02488"></a>02488   <a class="code" href="u8glib__ex_8h.html#ab21005f571adc78cec66b3d889f9e871">U8G_ESC_DLY</a>(100),               <span class="comment">/* delay 100 ms */</span>
<a name="l02489"></a>02489 
<a name="l02490"></a>02490   <a class="code" href="u8glib__ex_8h.html#ab44712ce2ec80eb205f1e3b8ba1f8f1a">U8G_ESC_CS</a>(0),             <span class="comment">/* disable chip */</span>
<a name="l02491"></a>02491   <a class="code" href="u8glib__ex_8h.html#a73a84b31415b6b731da3ca62f0e99a85">U8G_ESC_END</a>                <span class="comment">/* end of sequence */</span>
<a name="l02492"></a>02492 };
<a name="l02493"></a>02493 
<a name="l02494"></a><a class="code" href="u8glib__ex_8h.html#a5d84a26bc597edce4b84055a2425af1d">02494</a> uint8_t <a class="code" href="u8glib__ex_8h.html#a5d84a26bc597edce4b84055a2425af1d">u8g_dev_st7920_128x64_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t msg, <span class="keywordtype">void</span> *arg)
<a name="l02495"></a>02495 {
<a name="l02496"></a>02496   <span class="keywordflow">switch</span>(msg)
<a name="l02497"></a>02497   {
<a name="l02498"></a>02498     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#a34fd7e41b79f81e31b3149d5865d8f3d">U8G_DEV_MSG_INIT</a>:
<a name="l02499"></a>02499       <a class="code" href="u8glib__ex_8h.html#a518771bfce1a599503b3063d456be9b9">u8g_InitCom</a>(u8g, dev, <a class="code" href="u8glib__ex_8h.html#a27adbf385245f5d6d6be752c4211334f">U8G_SPI_CLK_CYCLE_400NS</a>);
<a name="l02500"></a>02500       <a class="code" href="u8glib__ex_8h.html#ab0e35a2c1e15e3dc98f0637ce8129744">u8g_WriteEscSeqP</a>(u8g, dev, u8g_dev_st7920_128x64_init_seq);
<a name="l02501"></a>02501       <span class="keywordflow">break</span>;
<a name="l02502"></a>02502     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#a376480714489edfb937e334b13a74d6b">U8G_DEV_MSG_STOP</a>:
<a name="l02503"></a>02503       <span class="keywordflow">break</span>;
<a name="l02504"></a>02504     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#a6bd7acf17c0a8391a9ad449f72273bd6">U8G_DEV_MSG_PAGE_NEXT</a>:
<a name="l02505"></a>02505       {
<a name="l02506"></a>02506         uint8_t y, i;
<a name="l02507"></a>02507         uint8_t *ptr;
<a name="l02508"></a>02508         <a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> *pb = (<a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> *)(dev-&gt;<a class="code" href="struct__u8g__dev__t.html#abba2e941334cbcd55738b77b1be6526e">dev_mem</a>);
<a name="l02509"></a>02509 
<a name="l02510"></a>02510         <a class="code" href="u8glib__ex_8h.html#ad89fac2c682a837406a1b86e7d7c2073">u8g_SetAddress</a>(u8g, dev, 0);           <span class="comment">/* cmd mode */</span>
<a name="l02511"></a>02511         <a class="code" href="u8glib__ex_8h.html#a0c34aac881e5e41b85c0fa41a47f0685">u8g_SetChipSelect</a>(u8g, dev, 1);
<a name="l02512"></a>02512         y = pb-&gt;<a class="code" href="struct__u8g__pb__t.html#ad86061e0a24796ae7c1752e6f25ecb97">p</a>.<a class="code" href="struct__u8g__page__t.html#ad849a6c82137ac60b0a2bd19cbd21b5a">page_y0</a>;
<a name="l02513"></a>02513         ptr = (uint8_t*)pb-&gt;<a class="code" href="struct__u8g__pb__t.html#a5bc5fa69bee375df074734a2c4858604">buf</a>;
<a name="l02514"></a>02514         <span class="keywordflow">for</span>( i = 0; i &lt; 8; i ++ )
<a name="l02515"></a>02515         {
<a name="l02516"></a>02516           <a class="code" href="u8glib__ex_8h.html#ad89fac2c682a837406a1b86e7d7c2073">u8g_SetAddress</a>(u8g, dev, 0);           <span class="comment">/* cmd mode */</span>
<a name="l02517"></a>02517           <a class="code" href="u8glib__ex_8h.html#af12049f27935eec7a9b5930f1f0f84a3">u8g_WriteByte</a>(u8g, dev, 0x03e );      <span class="comment">/* enable extended mode */</span>
<a name="l02518"></a>02518 
<a name="l02519"></a>02519           <span class="keywordflow">if</span> ( y &lt; 32 )
<a name="l02520"></a>02520           {
<a name="l02521"></a>02521                   <a class="code" href="u8glib__ex_8h.html#af12049f27935eec7a9b5930f1f0f84a3">u8g_WriteByte</a>(u8g, dev, 0x080 | y );      <span class="comment">/* y pos  */</span>
<a name="l02522"></a>02522                   <a class="code" href="u8glib__ex_8h.html#af12049f27935eec7a9b5930f1f0f84a3">u8g_WriteByte</a>(u8g, dev, 0x080  );      <span class="comment">/* set x pos to 0*/</span>
<a name="l02523"></a>02523           }
<a name="l02524"></a>02524           <span class="keywordflow">else</span>
<a name="l02525"></a>02525           {
<a name="l02526"></a>02526                   <a class="code" href="u8glib__ex_8h.html#af12049f27935eec7a9b5930f1f0f84a3">u8g_WriteByte</a>(u8g, dev, 0x080 | (y-32) );      <span class="comment">/* y pos  */</span>
<a name="l02527"></a>02527                   <a class="code" href="u8glib__ex_8h.html#af12049f27935eec7a9b5930f1f0f84a3">u8g_WriteByte</a>(u8g, dev, 0x080 | 8);      <span class="comment">/* set x pos to 64*/</span>
<a name="l02528"></a>02528           }
<a name="l02529"></a>02529 
<a name="l02530"></a>02530           <a class="code" href="u8glib__ex_8h.html#ad89fac2c682a837406a1b86e7d7c2073">u8g_SetAddress</a>(u8g, dev, 1);                  <span class="comment">/* data mode */</span>
<a name="l02531"></a>02531           <a class="code" href="u8glib__ex_8h.html#a1a25a189f85f6d89161d63a14da5f044">u8g_WriteSequence</a>(u8g, dev, <a class="code" href="u8glib__ex_8h.html#a241aeeb764887ae5e3de58b98f04b16d">WIDTH</a>/8, ptr);
<a name="l02532"></a>02532           ptr += <a class="code" href="u8glib__ex_8h.html#a241aeeb764887ae5e3de58b98f04b16d">WIDTH</a>/8;
<a name="l02533"></a>02533           y++;
<a name="l02534"></a>02534         }
<a name="l02535"></a>02535         <a class="code" href="u8glib__ex_8h.html#a0c34aac881e5e41b85c0fa41a47f0685">u8g_SetChipSelect</a>(u8g, dev, 0);
<a name="l02536"></a>02536       }
<a name="l02537"></a>02537       <span class="keywordflow">break</span>;
<a name="l02538"></a>02538   }
<a name="l02539"></a>02539   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#a49367556b38e77c7df14666d008513c1">u8g_dev_pb8h1_base_fn</a>(u8g, dev, msg, arg);
<a name="l02540"></a>02540 }
<a name="l02541"></a>02541 
<a name="l02542"></a><a class="code" href="u8glib__ex_8h.html#a9afb8dad5d0128d9f0f98824e9286fb0">02542</a> uint8_t <a class="code" href="u8glib__ex_8h.html#a9afb8dad5d0128d9f0f98824e9286fb0">u8g_dev_st7920_128x64_4x_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t msg, <span class="keywordtype">void</span> *arg)
<a name="l02543"></a>02543 {
<a name="l02544"></a>02544   <span class="keywordflow">switch</span>(msg)
<a name="l02545"></a>02545   {
<a name="l02546"></a>02546     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#a34fd7e41b79f81e31b3149d5865d8f3d">U8G_DEV_MSG_INIT</a>:
<a name="l02547"></a>02547       <a class="code" href="u8glib__ex_8h.html#a518771bfce1a599503b3063d456be9b9">u8g_InitCom</a>(u8g, dev, <a class="code" href="u8glib__ex_8h.html#a27adbf385245f5d6d6be752c4211334f">U8G_SPI_CLK_CYCLE_400NS</a>);
<a name="l02548"></a>02548       <a class="code" href="u8glib__ex_8h.html#ab0e35a2c1e15e3dc98f0637ce8129744">u8g_WriteEscSeqP</a>(u8g, dev, u8g_dev_st7920_128x64_init_seq);
<a name="l02549"></a>02549       <span class="keywordflow">break</span>;
<a name="l02550"></a>02550     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#a376480714489edfb937e334b13a74d6b">U8G_DEV_MSG_STOP</a>:
<a name="l02551"></a>02551       <span class="keywordflow">break</span>;
<a name="l02552"></a>02552     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#a6bd7acf17c0a8391a9ad449f72273bd6">U8G_DEV_MSG_PAGE_NEXT</a>:
<a name="l02553"></a>02553       {
<a name="l02554"></a>02554         uint8_t y, i;
<a name="l02555"></a>02555         uint8_t *ptr;
<a name="l02556"></a>02556         <a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> *pb = (<a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> *)(dev-&gt;<a class="code" href="struct__u8g__dev__t.html#abba2e941334cbcd55738b77b1be6526e">dev_mem</a>);
<a name="l02557"></a>02557 
<a name="l02558"></a>02558         <a class="code" href="u8glib__ex_8h.html#ad89fac2c682a837406a1b86e7d7c2073">u8g_SetAddress</a>(u8g, dev, 0);           <span class="comment">/* cmd mode */</span>
<a name="l02559"></a>02559         <a class="code" href="u8glib__ex_8h.html#a0c34aac881e5e41b85c0fa41a47f0685">u8g_SetChipSelect</a>(u8g, dev, 1);
<a name="l02560"></a>02560         y = pb-&gt;<a class="code" href="struct__u8g__pb__t.html#ad86061e0a24796ae7c1752e6f25ecb97">p</a>.<a class="code" href="struct__u8g__page__t.html#ad849a6c82137ac60b0a2bd19cbd21b5a">page_y0</a>;
<a name="l02561"></a>02561         ptr = (uint8_t*)pb-&gt;<a class="code" href="struct__u8g__pb__t.html#a5bc5fa69bee375df074734a2c4858604">buf</a>;
<a name="l02562"></a>02562         <span class="keywordflow">for</span>( i = 0; i &lt; 32; i ++ )
<a name="l02563"></a>02563         {
<a name="l02564"></a>02564           <a class="code" href="u8glib__ex_8h.html#ad89fac2c682a837406a1b86e7d7c2073">u8g_SetAddress</a>(u8g, dev, 0);           <span class="comment">/* cmd mode */</span>
<a name="l02565"></a>02565           <a class="code" href="u8glib__ex_8h.html#af12049f27935eec7a9b5930f1f0f84a3">u8g_WriteByte</a>(u8g, dev, 0x03e );      <span class="comment">/* enable extended mode */</span>
<a name="l02566"></a>02566 
<a name="l02567"></a>02567           <span class="keywordflow">if</span> ( y &lt; 32 )
<a name="l02568"></a>02568           {
<a name="l02569"></a>02569                   <a class="code" href="u8glib__ex_8h.html#af12049f27935eec7a9b5930f1f0f84a3">u8g_WriteByte</a>(u8g, dev, 0x080 | y );      <span class="comment">/* y pos  */</span>
<a name="l02570"></a>02570                   <a class="code" href="u8glib__ex_8h.html#af12049f27935eec7a9b5930f1f0f84a3">u8g_WriteByte</a>(u8g, dev, 0x080  );      <span class="comment">/* set x pos to 0*/</span>
<a name="l02571"></a>02571           }
<a name="l02572"></a>02572           <span class="keywordflow">else</span>
<a name="l02573"></a>02573           {
<a name="l02574"></a>02574                   <a class="code" href="u8glib__ex_8h.html#af12049f27935eec7a9b5930f1f0f84a3">u8g_WriteByte</a>(u8g, dev, 0x080 | (y-32) );      <span class="comment">/* y pos  */</span>
<a name="l02575"></a>02575                   <a class="code" href="u8glib__ex_8h.html#af12049f27935eec7a9b5930f1f0f84a3">u8g_WriteByte</a>(u8g, dev, 0x080 | 8);      <span class="comment">/* set x pos to 64*/</span>
<a name="l02576"></a>02576           }
<a name="l02577"></a>02577 
<a name="l02578"></a>02578           <a class="code" href="u8glib__ex_8h.html#ad89fac2c682a837406a1b86e7d7c2073">u8g_SetAddress</a>(u8g, dev, 1);                  <span class="comment">/* data mode */</span>
<a name="l02579"></a>02579           <a class="code" href="u8glib__ex_8h.html#a1a25a189f85f6d89161d63a14da5f044">u8g_WriteSequence</a>(u8g, dev, <a class="code" href="u8glib__ex_8h.html#a241aeeb764887ae5e3de58b98f04b16d">WIDTH</a>/8, ptr);
<a name="l02580"></a>02580           ptr += <a class="code" href="u8glib__ex_8h.html#a241aeeb764887ae5e3de58b98f04b16d">WIDTH</a>/8;
<a name="l02581"></a>02581           y++;
<a name="l02582"></a>02582         }
<a name="l02583"></a>02583         <a class="code" href="u8glib__ex_8h.html#a0c34aac881e5e41b85c0fa41a47f0685">u8g_SetChipSelect</a>(u8g, dev, 0);
<a name="l02584"></a>02584       }
<a name="l02585"></a>02585       <span class="keywordflow">break</span>;
<a name="l02586"></a>02586   }
<a name="l02587"></a>02587   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#ab6ca73b1e3fddbe6ba2aa7984d9cf54a">u8g_dev_pb32h1_base_fn</a>(u8g, dev, msg, arg);
<a name="l02588"></a>02588 }
<a name="l02589"></a>02589 
<a name="l02590"></a>02590 <a class="code" href="u8glib__ex_8h.html#a3097d1fd21586277e836bc0d4f08e6a6">U8G_PB_DEV</a>(u8g_dev_st7920_128x64_sw_spi, <a class="code" href="u8glib__ex_8h.html#a241aeeb764887ae5e3de58b98f04b16d">WIDTH</a>, <a class="code" href="u8glib__ex_8h.html#aed89bd71aee8be823e8a20ec4e093c1e">HEIGHT</a>, <a class="code" href="u8glib__ex_8h.html#a4008f07d33bd4a68ec766aab590f293b">PAGE_HEIGHT</a>, <a class="code" href="u8glib__ex_8h.html#a5d84a26bc597edce4b84055a2425af1d">u8g_dev_st7920_128x64_fn</a>, <a class="code" href="u8glib__ex_8h.html#a98d438d69b3855c4e74d9597e807b587">U8G_COM_ST7920_SW_SPI</a>);
<a name="l02591"></a>02591 <a class="code" href="u8glib__ex_8h.html#a3097d1fd21586277e836bc0d4f08e6a6">U8G_PB_DEV</a>(u8g_dev_st7920_128x64_hw_spi, <a class="code" href="u8glib__ex_8h.html#a241aeeb764887ae5e3de58b98f04b16d">WIDTH</a>, <a class="code" href="u8glib__ex_8h.html#aed89bd71aee8be823e8a20ec4e093c1e">HEIGHT</a>, <a class="code" href="u8glib__ex_8h.html#a4008f07d33bd4a68ec766aab590f293b">PAGE_HEIGHT</a>, <a class="code" href="u8glib__ex_8h.html#a5d84a26bc597edce4b84055a2425af1d">u8g_dev_st7920_128x64_fn</a>, <a class="code" href="u8glib__ex_8h.html#a4f63ac0b0e856ee284d89967032e8d42">U8G_COM_ST7920_HW_SPI</a>);
<a name="l02592"></a>02592 <a class="code" href="u8glib__ex_8h.html#a3097d1fd21586277e836bc0d4f08e6a6">U8G_PB_DEV</a>(u8g_dev_st7920_128x64_8bit, <a class="code" href="u8glib__ex_8h.html#a241aeeb764887ae5e3de58b98f04b16d">WIDTH</a>, <a class="code" href="u8glib__ex_8h.html#aed89bd71aee8be823e8a20ec4e093c1e">HEIGHT</a>, <a class="code" href="u8glib__ex_8h.html#a4008f07d33bd4a68ec766aab590f293b">PAGE_HEIGHT</a>, <a class="code" href="u8glib__ex_8h.html#a5d84a26bc597edce4b84055a2425af1d">u8g_dev_st7920_128x64_fn</a>, <a class="code" href="u8glib__ex_8h.html#a2d64ca77be4419f641522a9131776af4">U8G_COM_FAST_PARALLEL</a>);
<a name="l02593"></a>02593 <a class="code" href="u8glib__ex_8h.html#a3097d1fd21586277e836bc0d4f08e6a6">U8G_PB_DEV</a>(u8g_dev_st7920_128x64_custom, <a class="code" href="u8glib__ex_8h.html#a241aeeb764887ae5e3de58b98f04b16d">WIDTH</a>, <a class="code" href="u8glib__ex_8h.html#aed89bd71aee8be823e8a20ec4e093c1e">HEIGHT</a>, <a class="code" href="u8glib__ex_8h.html#a4008f07d33bd4a68ec766aab590f293b">PAGE_HEIGHT</a>, <a class="code" href="u8glib__ex_8h.html#a5d84a26bc597edce4b84055a2425af1d">u8g_dev_st7920_128x64_fn</a>, <a class="code" href="u8glib__ex_8h.html#a2caab5ab85934b5e14b8f19e1e37ea9d">u8g_com_arduino_st7920_custom_fn</a>);
<a name="l02594"></a>02594 
<a name="l02595"></a>02595 
<a name="l02596"></a>02596 
<a name="l02597"></a><a class="code" href="u8glib__ex_8h.html#ac44eb45c6a90001abf1fdf2f4884c87e">02597</a> <span class="preprocessor">#define QWIDTH (WIDTH*4)</span>
<a name="l02598"></a><a class="code" href="u8glib__ex_8h.html#a83598baac570f95eaec66692e50fed06">02598</a> <span class="preprocessor"></span>uint8_t u8g_dev_st7920_128x64_4x_buf[<a class="code" href="u8glib__ex_8h.html#ac44eb45c6a90001abf1fdf2f4884c87e">QWIDTH</a>] <a class="code" href="u8glib__ex_8h.html#a2867d72e981a9705f217f940b6dc1add">U8G_NOCOMMON</a> ;
<a name="l02599"></a><a class="code" href="u8glib__ex_8h.html#aad87fe9fd1badb5724f34c06d3d96717">02599</a> <a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> <a class="code" href="u8glib__ex_8h.html#aad87fe9fd1badb5724f34c06d3d96717">u8g_dev_st7920_128x64_4x_pb</a> = { {32, <a class="code" href="u8glib__ex_8h.html#aed89bd71aee8be823e8a20ec4e093c1e">HEIGHT</a>, 0, 0, 0},  <a class="code" href="u8glib__ex_8h.html#a241aeeb764887ae5e3de58b98f04b16d">WIDTH</a>, u8g_dev_st7920_128x64_4x_buf};
<a name="l02600"></a><a class="code" href="u8glib__ex_8h.html#a0b61f69af54b798d3bdac3ac89489f8f">02600</a> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> u8g_dev_st7920_128x64_4x_sw_spi = { <a class="code" href="u8glib__ex_8h.html#a9afb8dad5d0128d9f0f98824e9286fb0">u8g_dev_st7920_128x64_4x_fn</a>, &amp;<a class="code" href="u8glib__ex_8h.html#aad87fe9fd1badb5724f34c06d3d96717">u8g_dev_st7920_128x64_4x_pb</a>, <a class="code" href="u8glib__ex_8h.html#a98d438d69b3855c4e74d9597e807b587">U8G_COM_ST7920_SW_SPI</a> };
<a name="l02601"></a><a class="code" href="u8glib__ex_8h.html#a55144ede29b53115554f95c7e683f342">02601</a> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> u8g_dev_st7920_128x64_4x_hw_spi = { <a class="code" href="u8glib__ex_8h.html#a9afb8dad5d0128d9f0f98824e9286fb0">u8g_dev_st7920_128x64_4x_fn</a>, &amp;<a class="code" href="u8glib__ex_8h.html#aad87fe9fd1badb5724f34c06d3d96717">u8g_dev_st7920_128x64_4x_pb</a>, <a class="code" href="u8glib__ex_8h.html#a4f63ac0b0e856ee284d89967032e8d42">U8G_COM_ST7920_HW_SPI</a> };
<a name="l02602"></a><a class="code" href="u8glib__ex_8h.html#a1137a5b078a98ea5b566339d326abfeb">02602</a> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> u8g_dev_st7920_128x64_4x_8bit = { <a class="code" href="u8glib__ex_8h.html#a9afb8dad5d0128d9f0f98824e9286fb0">u8g_dev_st7920_128x64_4x_fn</a>, &amp;<a class="code" href="u8glib__ex_8h.html#aad87fe9fd1badb5724f34c06d3d96717">u8g_dev_st7920_128x64_4x_pb</a>, <a class="code" href="u8glib__ex_8h.html#a2d64ca77be4419f641522a9131776af4">U8G_COM_FAST_PARALLEL</a> };
<a name="l02603"></a><a class="code" href="u8glib__ex_8h.html#a6a34dae1f4cee3bf7b700845150dd842">02603</a> <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> u8g_dev_st7920_128x64_4x_custom = { <a class="code" href="u8glib__ex_8h.html#a9afb8dad5d0128d9f0f98824e9286fb0">u8g_dev_st7920_128x64_4x_fn</a>, &amp;<a class="code" href="u8glib__ex_8h.html#aad87fe9fd1badb5724f34c06d3d96717">u8g_dev_st7920_128x64_4x_pb</a>, <a class="code" href="u8glib__ex_8h.html#a2caab5ab85934b5e14b8f19e1e37ea9d">u8g_com_arduino_st7920_custom_fn</a> };
<a name="l02604"></a>02604 
<a name="l02605"></a>02605 
<a name="l02606"></a>02606 <span class="comment">// ================ u8g_font.c ===================</span>
<a name="l02607"></a>02607 
<a name="l02608"></a>02608 <span class="comment">/*</span>
<a name="l02609"></a>02609 <span class="comment"></span>
<a name="l02610"></a>02610 <span class="comment">  u8g_font.c</span>
<a name="l02611"></a>02611 <span class="comment"></span>
<a name="l02612"></a>02612 <span class="comment">  U8G Font High Level Interface</span>
<a name="l02613"></a>02613 <span class="comment"></span>
<a name="l02614"></a>02614 <span class="comment">  Universal 8bit Graphics Library</span>
<a name="l02615"></a>02615 <span class="comment"></span>
<a name="l02616"></a>02616 <span class="comment">  Copyright (c) 2011, olikraus@gmail.com</span>
<a name="l02617"></a>02617 <span class="comment">  All rights reserved.</span>
<a name="l02618"></a>02618 <span class="comment"></span>
<a name="l02619"></a>02619 <span class="comment">  Redistribution and use in source and binary forms, with or without modification,</span>
<a name="l02620"></a>02620 <span class="comment">  are permitted provided that the following conditions are met:</span>
<a name="l02621"></a>02621 <span class="comment"></span>
<a name="l02622"></a>02622 <span class="comment">  * Redistributions of source code must retain the above copyright notice, this list</span>
<a name="l02623"></a>02623 <span class="comment">    of conditions and the following disclaimer.</span>
<a name="l02624"></a>02624 <span class="comment"></span>
<a name="l02625"></a>02625 <span class="comment">  * Redistributions in binary form must reproduce the above copyright notice, this</span>
<a name="l02626"></a>02626 <span class="comment">    list of conditions and the following disclaimer in the documentation and/or other</span>
<a name="l02627"></a>02627 <span class="comment">    materials provided with the distribution.</span>
<a name="l02628"></a>02628 <span class="comment"></span>
<a name="l02629"></a>02629 <span class="comment">  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND</span>
<a name="l02630"></a>02630 <span class="comment">  CONTRIBUTORS &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES,</span>
<a name="l02631"></a>02631 <span class="comment">  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF</span>
<a name="l02632"></a>02632 <span class="comment">  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span>
<a name="l02633"></a>02633 <span class="comment">  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR</span>
<a name="l02634"></a>02634 <span class="comment">  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</span>
<a name="l02635"></a>02635 <span class="comment">  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT</span>
<a name="l02636"></a>02636 <span class="comment">  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span>
<a name="l02637"></a>02637 <span class="comment">  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span>
<a name="l02638"></a>02638 <span class="comment">  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,</span>
<a name="l02639"></a>02639 <span class="comment">  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span>
<a name="l02640"></a>02640 <span class="comment">  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF</span>
<a name="l02641"></a>02641 <span class="comment">  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span>
<a name="l02642"></a>02642 <span class="comment"></span>
<a name="l02643"></a>02643 <span class="comment"></span>
<a name="l02644"></a>02644 <span class="comment">*/</span>
<a name="l02645"></a>02645 
<a name="l02646"></a>02646 
<a name="l02647"></a>02647 <span class="comment">/* font api */</span>
<a name="l02648"></a>02648 
<a name="l02649"></a>02649 <span class="comment">/* pointer to the start adress of the glyph, points to progmem area */</span>
<a name="l02650"></a><a class="code" href="u8glib__ex_8h.html#af4d7b28db8aeebfeab34e4244f79a4d1">02650</a> <span class="keyword">typedef</span> <span class="keywordtype">void</span> * <a class="code" href="u8glib__ex_8h.html#af4d7b28db8aeebfeab34e4244f79a4d1">u8g_glyph_t</a>;
<a name="l02651"></a>02651 
<a name="l02652"></a>02652 <span class="comment">/* size of the font data structure, there is no struct or class... */</span>
<a name="l02653"></a><a class="code" href="u8glib__ex_8h.html#aafb132a7935efdd220afcf2654050603">02653</a> <span class="preprocessor">#define U8G_FONT_DATA_STRUCT_SIZE 17</span>
<a name="l02654"></a>02654 <span class="preprocessor"></span>
<a name="l02655"></a>02655 <span class="comment">/*</span>
<a name="l02656"></a>02656 <span class="comment">  ... instead the fields of the font data structure are accessed directly by offset</span>
<a name="l02657"></a>02657 <span class="comment">  font information</span>
<a name="l02658"></a>02658 <span class="comment">  offset</span>
<a name="l02659"></a>02659 <span class="comment">  0             font format</span>
<a name="l02660"></a>02660 <span class="comment">  1             FONTBOUNDINGBOX width           unsigned</span>
<a name="l02661"></a>02661 <span class="comment">  2             FONTBOUNDINGBOX height          unsigned</span>
<a name="l02662"></a>02662 <span class="comment">  3             FONTBOUNDINGBOX x-offset         signed</span>
<a name="l02663"></a>02663 <span class="comment">  4             FONTBOUNDINGBOX y-offset        signed</span>
<a name="l02664"></a>02664 <span class="comment">  5             capital A height                                unsigned</span>
<a name="l02665"></a>02665 <span class="comment">  6             start &#39;A&#39;</span>
<a name="l02666"></a>02666 <span class="comment">  8             start &#39;a&#39;</span>
<a name="l02667"></a>02667 <span class="comment">  10            encoding start</span>
<a name="l02668"></a>02668 <span class="comment">  11            encoding end</span>
<a name="l02669"></a>02669 <span class="comment">  12            descent &#39;g&#39;                     negative: below baseline</span>
<a name="l02670"></a>02670 <span class="comment">  13            font max ascent</span>
<a name="l02671"></a>02671 <span class="comment">  14            font min decent             negative: below baseline</span>
<a name="l02672"></a>02672 <span class="comment">  15            font xascent</span>
<a name="l02673"></a>02673 <span class="comment">  16            font xdecent             negative: below baseline</span>
<a name="l02674"></a>02674 <span class="comment"></span>
<a name="l02675"></a>02675 <span class="comment">*/</span>
<a name="l02676"></a>02676 
<a name="l02677"></a>02677 <span class="comment">/* use case: What is the width and the height of the minimal box into which string s fints? */</span>
<a name="l02678"></a>02678 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a4a83329036a47f33e1c6162e4ec4ba5d">u8g_font_GetStrSize</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *font, <span class="keyword">const</span> <span class="keywordtype">char</span> *s, u8g_uint_t *width, u8g_uint_t *height);
<a name="l02679"></a>02679 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a1e79910ea3c6a9d991cce6b638809ad7">u8g_font_GetStrSizeP</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *font, <span class="keyword">const</span> <span class="keywordtype">char</span> *s, u8g_uint_t *width, u8g_uint_t *height);
<a name="l02680"></a>02680 
<a name="l02681"></a>02681 <span class="comment">/* use case: lower left edge of a minimal box is known, what is the correct x, y position for the string draw procedure */</span>
<a name="l02682"></a>02682 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#ab474ce69d13c8f73ba1f5117d3667037">u8g_font_AdjustXYToDraw</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *font, <span class="keyword">const</span> <span class="keywordtype">char</span> *s, u8g_uint_t *x, u8g_uint_t *y);
<a name="l02683"></a>02683 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a93b0e2c2445f46feac77d584da1700fb">u8g_font_AdjustXYToDrawP</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *font, <span class="keyword">const</span> <span class="keywordtype">char</span> *s, u8g_uint_t *x, u8g_uint_t *y);
<a name="l02684"></a>02684 
<a name="l02685"></a>02685 <span class="comment">/* use case: Baseline origin known, return minimal box */</span>
<a name="l02686"></a>02686 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a8b866baad0aa9f7afda33ba67bbeaa97">u8g_font_GetStrMinBox</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <span class="keyword">const</span> <span class="keywordtype">void</span> *font, <span class="keyword">const</span> <span class="keywordtype">char</span> *s, u8g_uint_t *x, u8g_uint_t *y, u8g_uint_t *width, u8g_uint_t *height);
<a name="l02687"></a>02687 
<a name="l02688"></a>02688 <span class="comment">/* procedures */</span>
<a name="l02689"></a>02689 
<a name="l02690"></a>02690 <span class="comment">/*========================================================================*/</span>
<a name="l02691"></a>02691 <span class="comment">/* low level byte and word access */</span>
<a name="l02692"></a>02692 
<a name="l02693"></a>02693 <span class="comment">/* removed NOINLINE, because it leads to smaller code, might also be faster */</span>
<a name="l02694"></a>02694 <span class="comment">//static uint8_t u8g_font_get_byte(const u8g_fntpgm_uint8_t *font, uint8_t offset) U8G_NOINLINE;</span>
<a name="l02695"></a><a class="code" href="u8glib__ex_8h.html#acb1cfe5ed15e7251837c4752a3c66d48">02695</a> <span class="keyword">static</span> uint8_t <a class="code" href="u8glib__ex_8h.html#acb1cfe5ed15e7251837c4752a3c66d48">u8g_font_get_byte</a>(<span class="keyword">const</span> u8g_fntpgm_uint8_t *font, uint8_t offset)
<a name="l02696"></a>02696 {
<a name="l02697"></a>02697   font += offset;
<a name="l02698"></a>02698   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>( (u8g_pgm_uint8_t *)font );
<a name="l02699"></a>02699 }
<a name="l02700"></a>02700 
<a name="l02701"></a>02701 <span class="keyword">static</span> uint16_t <a class="code" href="u8glib__ex_8h.html#a15e7c6a7f5edba490ba97b5a7a87a61b">u8g_font_get_word</a>(<span class="keyword">const</span> u8g_fntpgm_uint8_t *font, uint8_t offset) <a class="code" href="u8glib__ex_8h.html#a4bae67fd4823619e3aa810feaf68e93b">U8G_NOINLINE</a>;
<a name="l02702"></a><a class="code" href="u8glib__ex_8h.html#a15e7c6a7f5edba490ba97b5a7a87a61b">02702</a> <span class="keyword">static</span> uint16_t <a class="code" href="u8glib__ex_8h.html#a15e7c6a7f5edba490ba97b5a7a87a61b">u8g_font_get_word</a>(<span class="keyword">const</span> u8g_fntpgm_uint8_t *font, uint8_t offset)
<a name="l02703"></a>02703 {
<a name="l02704"></a>02704     uint16_t pos;
<a name="l02705"></a>02705     font += offset;
<a name="l02706"></a>02706     pos = <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>( (u8g_pgm_uint8_t *)font );
<a name="l02707"></a>02707     font++;
<a name="l02708"></a>02708     pos &lt;&lt;= 8;
<a name="l02709"></a>02709     pos += <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>( (u8g_pgm_uint8_t *)font);
<a name="l02710"></a>02710     <span class="keywordflow">return</span> pos;
<a name="l02711"></a>02711 }
<a name="l02712"></a>02712 
<a name="l02713"></a>02713 <span class="comment">/*========================================================================*/</span>
<a name="l02714"></a>02714 <span class="comment">/* direct access on the font */</span>
<a name="l02715"></a>02715 
<a name="l02716"></a>02716 <span class="keyword">static</span> uint8_t <a class="code" href="u8glib__ex_8h.html#ad85eb74dabd39bef01ec6c85d68bf0bc">u8g_font_GetFormat</a>(<span class="keyword">const</span> u8g_fntpgm_uint8_t *font) <a class="code" href="u8glib__ex_8h.html#a4bae67fd4823619e3aa810feaf68e93b">U8G_NOINLINE</a>;
<a name="l02717"></a><a class="code" href="u8glib__ex_8h.html#ad85eb74dabd39bef01ec6c85d68bf0bc">02717</a> <span class="keyword">static</span> uint8_t <a class="code" href="u8glib__ex_8h.html#ad85eb74dabd39bef01ec6c85d68bf0bc">u8g_font_GetFormat</a>(<span class="keyword">const</span> u8g_fntpgm_uint8_t *font)
<a name="l02718"></a>02718 {
<a name="l02719"></a>02719   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#acb1cfe5ed15e7251837c4752a3c66d48">u8g_font_get_byte</a>((<span class="keyword">const</span> u8g_fntpgm_uint8_t*)font, 0);
<a name="l02720"></a>02720 }
<a name="l02721"></a>02721 
<a name="l02722"></a>02722 <span class="keyword">static</span> uint8_t <a class="code" href="u8glib__ex_8h.html#a7620189789aaa601a6f90f726ee5a90d">u8g_font_GetFontGlyphStructureSize</a>(<span class="keyword">const</span> u8g_fntpgm_uint8_t *font) <a class="code" href="u8glib__ex_8h.html#a4bae67fd4823619e3aa810feaf68e93b">U8G_NOINLINE</a>;
<a name="l02723"></a><a class="code" href="u8glib__ex_8h.html#a7620189789aaa601a6f90f726ee5a90d">02723</a> <span class="keyword">static</span> uint8_t <a class="code" href="u8glib__ex_8h.html#a7620189789aaa601a6f90f726ee5a90d">u8g_font_GetFontGlyphStructureSize</a>(<span class="keyword">const</span> u8g_fntpgm_uint8_t *font)
<a name="l02724"></a>02724 {
<a name="l02725"></a>02725   <span class="keywordflow">switch</span>(<a class="code" href="u8glib__ex_8h.html#ad85eb74dabd39bef01ec6c85d68bf0bc">u8g_font_GetFormat</a>((<span class="keyword">const</span> u8g_fntpgm_uint8_t*)font))
<a name="l02726"></a>02726   {
<a name="l02727"></a>02727     <span class="keywordflow">case</span> 0: <span class="keywordflow">return</span> 6;
<a name="l02728"></a>02728     <span class="keywordflow">case</span> 1: <span class="keywordflow">return</span> 3;
<a name="l02729"></a>02729     <span class="keywordflow">case</span> 2: <span class="keywordflow">return</span> 6;
<a name="l02730"></a>02730   }
<a name="l02731"></a>02731   <span class="keywordflow">return</span> 3;
<a name="l02732"></a>02732 }
<a name="l02733"></a>02733 
<a name="l02734"></a><a class="code" href="u8glib__ex_8h.html#ab17715f1f4cfd432d469192c8190c9bc">02734</a> <span class="keyword">static</span> uint8_t <a class="code" href="u8glib__ex_8h.html#ab17715f1f4cfd432d469192c8190c9bc">u8g_font_GetBBXWidth</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *font)
<a name="l02735"></a>02735 {
<a name="l02736"></a>02736   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#acb1cfe5ed15e7251837c4752a3c66d48">u8g_font_get_byte</a>((<span class="keyword">const</span> u8g_fntpgm_uint8_t*)font, 1);
<a name="l02737"></a>02737 }
<a name="l02738"></a>02738 
<a name="l02739"></a><a class="code" href="u8glib__ex_8h.html#a0dd3ddf993e05a5d09925b10658a865b">02739</a> <span class="keyword">static</span> uint8_t <a class="code" href="u8glib__ex_8h.html#a0dd3ddf993e05a5d09925b10658a865b">u8g_font_GetBBXHeight</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *font)
<a name="l02740"></a>02740 {
<a name="l02741"></a>02741   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#acb1cfe5ed15e7251837c4752a3c66d48">u8g_font_get_byte</a>((<span class="keyword">const</span> u8g_fntpgm_uint8_t*)font, 2);
<a name="l02742"></a>02742 }
<a name="l02743"></a>02743 
<a name="l02744"></a><a class="code" href="u8glib__ex_8h.html#a1b890825c5add336d21257aa702ea290">02744</a> <span class="keyword">static</span> int8_t <a class="code" href="u8glib__ex_8h.html#a1b890825c5add336d21257aa702ea290">u8g_font_GetBBXOffX</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *font)
<a name="l02745"></a>02745 {
<a name="l02746"></a>02746   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#acb1cfe5ed15e7251837c4752a3c66d48">u8g_font_get_byte</a>((<span class="keyword">const</span> u8g_fntpgm_uint8_t*)font, 3);
<a name="l02747"></a>02747 }
<a name="l02748"></a>02748 
<a name="l02749"></a><a class="code" href="u8glib__ex_8h.html#a81878c13b870e8ac8c33c4df8797e43f">02749</a> <span class="keyword">static</span> int8_t <a class="code" href="u8glib__ex_8h.html#a81878c13b870e8ac8c33c4df8797e43f">u8g_font_GetBBXOffY</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *font)
<a name="l02750"></a>02750 {
<a name="l02751"></a>02751   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#acb1cfe5ed15e7251837c4752a3c66d48">u8g_font_get_byte</a>((<span class="keyword">const</span> u8g_fntpgm_uint8_t*)font, 4);
<a name="l02752"></a>02752 }
<a name="l02753"></a>02753 
<a name="l02754"></a><a class="code" href="u8glib__ex_8h.html#adef4a3f7491cf25c21212d15052e0ba4">02754</a> uint8_t <a class="code" href="u8glib__ex_8h.html#adef4a3f7491cf25c21212d15052e0ba4">u8g_font_GetCapitalAHeight</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *font)
<a name="l02755"></a>02755 {
<a name="l02756"></a>02756   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#acb1cfe5ed15e7251837c4752a3c66d48">u8g_font_get_byte</a>((<span class="keyword">const</span> u8g_fntpgm_uint8_t*)font, 5);
<a name="l02757"></a>02757 }
<a name="l02758"></a>02758 
<a name="l02759"></a>02759 uint16_t <a class="code" href="u8glib__ex_8h.html#aa5584d17025c286b6fe57f8ed7ac04a7">u8g_font_GetEncoding65Pos</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *font) <a class="code" href="u8glib__ex_8h.html#a4bae67fd4823619e3aa810feaf68e93b">U8G_NOINLINE</a>;
<a name="l02760"></a><a class="code" href="u8glib__ex_8h.html#aa5584d17025c286b6fe57f8ed7ac04a7">02760</a> uint16_t <a class="code" href="u8glib__ex_8h.html#aa5584d17025c286b6fe57f8ed7ac04a7">u8g_font_GetEncoding65Pos</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *font)
<a name="l02761"></a>02761 {
<a name="l02762"></a>02762     <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#a15e7c6a7f5edba490ba97b5a7a87a61b">u8g_font_get_word</a>((<span class="keyword">const</span> u8g_fntpgm_uint8_t*)font, 6);
<a name="l02763"></a>02763 }
<a name="l02764"></a>02764 
<a name="l02765"></a>02765 uint16_t <a class="code" href="u8glib__ex_8h.html#a28c39858a8e68776b459fa1adca80ce6">u8g_font_GetEncoding97Pos</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *font) <a class="code" href="u8glib__ex_8h.html#a4bae67fd4823619e3aa810feaf68e93b">U8G_NOINLINE</a>;
<a name="l02766"></a><a class="code" href="u8glib__ex_8h.html#a28c39858a8e68776b459fa1adca80ce6">02766</a> uint16_t <a class="code" href="u8glib__ex_8h.html#a28c39858a8e68776b459fa1adca80ce6">u8g_font_GetEncoding97Pos</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *font)
<a name="l02767"></a>02767 {
<a name="l02768"></a>02768     <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#a15e7c6a7f5edba490ba97b5a7a87a61b">u8g_font_get_word</a>((<span class="keyword">const</span> u8g_fntpgm_uint8_t*)font, 8);
<a name="l02769"></a>02769 }
<a name="l02770"></a>02770 
<a name="l02771"></a><a class="code" href="u8glib__ex_8h.html#afa56f5a047aa85818332363c16a2c2c1">02771</a> uint8_t <a class="code" href="u8glib__ex_8h.html#afa56f5a047aa85818332363c16a2c2c1">u8g_font_GetFontStartEncoding</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *font)
<a name="l02772"></a>02772 {
<a name="l02773"></a>02773   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#acb1cfe5ed15e7251837c4752a3c66d48">u8g_font_get_byte</a>((<span class="keyword">const</span> u8g_fntpgm_uint8_t*)font, 10);
<a name="l02774"></a>02774 }
<a name="l02775"></a>02775 
<a name="l02776"></a><a class="code" href="u8glib__ex_8h.html#ae4c0c24bb21f17d85703ce058525b3bc">02776</a> uint8_t <a class="code" href="u8glib__ex_8h.html#ae4c0c24bb21f17d85703ce058525b3bc">u8g_font_GetFontEndEncoding</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *font)
<a name="l02777"></a>02777 {
<a name="l02778"></a>02778   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#acb1cfe5ed15e7251837c4752a3c66d48">u8g_font_get_byte</a>((<span class="keyword">const</span> u8g_fntpgm_uint8_t*)font, 11);
<a name="l02779"></a>02779 }
<a name="l02780"></a>02780 
<a name="l02781"></a><a class="code" href="u8glib__ex_8h.html#a500526b4e195c609286e817da1f31c9b">02781</a> int8_t <a class="code" href="u8glib__ex_8h.html#a500526b4e195c609286e817da1f31c9b">u8g_font_GetLowerGDescent</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *font)
<a name="l02782"></a>02782 {
<a name="l02783"></a>02783   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#acb1cfe5ed15e7251837c4752a3c66d48">u8g_font_get_byte</a>((<span class="keyword">const</span> u8g_fntpgm_uint8_t*)font, 12);
<a name="l02784"></a>02784 }
<a name="l02785"></a>02785 
<a name="l02786"></a><a class="code" href="u8glib__ex_8h.html#aa3b2ba6a5bb6c9ac2921bd4fa8fe414b">02786</a> int8_t <a class="code" href="u8glib__ex_8h.html#aa3b2ba6a5bb6c9ac2921bd4fa8fe414b">u8g_font_GetFontAscent</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *font)
<a name="l02787"></a>02787 {
<a name="l02788"></a>02788   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#acb1cfe5ed15e7251837c4752a3c66d48">u8g_font_get_byte</a>((<span class="keyword">const</span> u8g_fntpgm_uint8_t*)font, 13);
<a name="l02789"></a>02789 }
<a name="l02790"></a>02790 
<a name="l02791"></a><a class="code" href="u8glib__ex_8h.html#a195e16921554f54a5b8a5d650e14c004">02791</a> int8_t <a class="code" href="u8glib__ex_8h.html#a195e16921554f54a5b8a5d650e14c004">u8g_font_GetFontDescent</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *font)
<a name="l02792"></a>02792 {
<a name="l02793"></a>02793   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#acb1cfe5ed15e7251837c4752a3c66d48">u8g_font_get_byte</a>((<span class="keyword">const</span> u8g_fntpgm_uint8_t*)font, 14);
<a name="l02794"></a>02794 }
<a name="l02795"></a>02795 
<a name="l02796"></a><a class="code" href="u8glib__ex_8h.html#a6cb34c8d8c0a24f1be4215ccaa5b5da4">02796</a> int8_t <a class="code" href="u8glib__ex_8h.html#a6cb34c8d8c0a24f1be4215ccaa5b5da4">u8g_font_GetFontXAscent</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *font)
<a name="l02797"></a>02797 {
<a name="l02798"></a>02798   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#acb1cfe5ed15e7251837c4752a3c66d48">u8g_font_get_byte</a>((<span class="keyword">const</span> u8g_fntpgm_uint8_t*)font, 15);
<a name="l02799"></a>02799 }
<a name="l02800"></a>02800 
<a name="l02801"></a><a class="code" href="u8glib__ex_8h.html#a7527a525f56d467564ce36b428c59a11">02801</a> int8_t <a class="code" href="u8glib__ex_8h.html#a7527a525f56d467564ce36b428c59a11">u8g_font_GetFontXDescent</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *font)
<a name="l02802"></a>02802 {
<a name="l02803"></a>02803   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#acb1cfe5ed15e7251837c4752a3c66d48">u8g_font_get_byte</a>((<span class="keyword">const</span> u8g_fntpgm_uint8_t*)font, 16);
<a name="l02804"></a>02804 }
<a name="l02805"></a>02805 
<a name="l02806"></a>02806 
<a name="l02807"></a>02807 <span class="comment">/* return the data start for a font and the glyph pointer */</span>
<a name="l02808"></a><a class="code" href="u8glib__ex_8h.html#a66c59a617852db487bab9d5d0503d624">02808</a> <span class="keyword">static</span> uint8_t *<a class="code" href="u8glib__ex_8h.html#a66c59a617852db487bab9d5d0503d624">u8g_font_GetGlyphDataStart</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *font, u8g_glyph_t g)
<a name="l02809"></a>02809 {
<a name="l02810"></a>02810   <span class="keywordflow">return</span> ((u8g_fntpgm_uint8_t *)g) + <a class="code" href="u8glib__ex_8h.html#a7620189789aaa601a6f90f726ee5a90d">u8g_font_GetFontGlyphStructureSize</a>((<span class="keyword">const</span> u8g_fntpgm_uint8_t*)font);
<a name="l02811"></a>02811 }
<a name="l02812"></a>02812 
<a name="l02813"></a>02813 <span class="comment">/* calculate the overall length of the font, only used to create the picture for the google wiki */</span>
<a name="l02814"></a><a class="code" href="u8glib__ex_8h.html#adb6e87d683d4328c342563a5f1b8044e">02814</a> <span class="keywordtype">size_t</span> <a class="code" href="u8glib__ex_8h.html#adb6e87d683d4328c342563a5f1b8044e">u8g_font_GetSize</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *font)
<a name="l02815"></a>02815 {
<a name="l02816"></a>02816   uint8_t *p = (uint8_t *)(font);
<a name="l02817"></a>02817   uint8_t font_format = <a class="code" href="u8glib__ex_8h.html#ad85eb74dabd39bef01ec6c85d68bf0bc">u8g_font_GetFormat</a>((<span class="keyword">const</span> u8g_fntpgm_uint8_t*)font);
<a name="l02818"></a>02818   uint8_t data_structure_size = <a class="code" href="u8glib__ex_8h.html#a7620189789aaa601a6f90f726ee5a90d">u8g_font_GetFontGlyphStructureSize</a>((<span class="keyword">const</span> u8g_fntpgm_uint8_t*)font);
<a name="l02819"></a>02819   uint8_t start, end;
<a name="l02820"></a>02820   uint8_t i;
<a name="l02821"></a>02821   uint8_t mask = 255;
<a name="l02822"></a>02822 
<a name="l02823"></a>02823   start = <a class="code" href="u8glib__ex_8h.html#afa56f5a047aa85818332363c16a2c2c1">u8g_font_GetFontStartEncoding</a>(font);
<a name="l02824"></a>02824   end = <a class="code" href="u8glib__ex_8h.html#ae4c0c24bb21f17d85703ce058525b3bc">u8g_font_GetFontEndEncoding</a>(font);
<a name="l02825"></a>02825 
<a name="l02826"></a>02826   <span class="keywordflow">if</span> ( font_format == 1 )
<a name="l02827"></a>02827     mask = 15;
<a name="l02828"></a>02828 
<a name="l02829"></a>02829   p += <a class="code" href="u8glib__ex_8h.html#aafb132a7935efdd220afcf2654050603">U8G_FONT_DATA_STRUCT_SIZE</a>;       <span class="comment">/* skip font general information */</span>
<a name="l02830"></a>02830 
<a name="l02831"></a>02831   i = start;
<a name="l02832"></a>02832   <span class="keywordflow">for</span>(;;)
<a name="l02833"></a>02833   {
<a name="l02834"></a>02834     <span class="keywordflow">if</span> ( <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>((u8g_pgm_uint8_t *)(p)) == 255 )
<a name="l02835"></a>02835     {
<a name="l02836"></a>02836       p += 1;
<a name="l02837"></a>02837     }
<a name="l02838"></a>02838     <span class="keywordflow">else</span>
<a name="l02839"></a>02839     {
<a name="l02840"></a>02840       p += <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>( ((u8g_pgm_uint8_t *)(p)) + 2 ) &amp; mask;
<a name="l02841"></a>02841       p += data_structure_size;
<a name="l02842"></a>02842     }
<a name="l02843"></a>02843     <span class="keywordflow">if</span> ( i == end )
<a name="l02844"></a>02844       <span class="keywordflow">break</span>;
<a name="l02845"></a>02845     i++;
<a name="l02846"></a>02846   }
<a name="l02847"></a>02847 
<a name="l02848"></a>02848   <span class="keywordflow">return</span> p - (uint8_t *)font;
<a name="l02849"></a>02849 }
<a name="l02850"></a>02850 
<a name="l02851"></a>02851 <span class="comment">/*========================================================================*/</span>
<a name="l02852"></a>02852 <span class="comment">/* u8g interface, font access */</span>
<a name="l02853"></a>02853 
<a name="l02854"></a><a class="code" href="u8glib__ex_8h.html#ad5ac48bca9c77d57d31329dcfbb92ad8">02854</a> uint8_t <a class="code" href="u8glib__ex_8h.html#ad5ac48bca9c77d57d31329dcfbb92ad8">u8g_GetFontBBXWidth</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g)
<a name="l02855"></a>02855 {
<a name="l02856"></a>02856   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#ab17715f1f4cfd432d469192c8190c9bc">u8g_font_GetBBXWidth</a>(u8g-&gt;<a class="code" href="struct__u8g__t.html#a098e0a80024577b9bb8644bd1fcc2aeb">font</a>);
<a name="l02857"></a>02857 }
<a name="l02858"></a>02858 
<a name="l02859"></a><a class="code" href="u8glib__ex_8h.html#a87154534e87eaa279e4df715362f949e">02859</a> uint8_t <a class="code" href="u8glib__ex_8h.html#a87154534e87eaa279e4df715362f949e">u8g_GetFontBBXHeight</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g)
<a name="l02860"></a>02860 {
<a name="l02861"></a>02861   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#a0dd3ddf993e05a5d09925b10658a865b">u8g_font_GetBBXHeight</a>(u8g-&gt;<a class="code" href="struct__u8g__t.html#a098e0a80024577b9bb8644bd1fcc2aeb">font</a>);
<a name="l02862"></a>02862 }
<a name="l02863"></a>02863 
<a name="l02864"></a>02864 int8_t <a class="code" href="u8glib__ex_8h.html#ae8d670dfb6bb613b598305378516398c">u8g_GetFontBBXOffX</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g) <a class="code" href="u8glib__ex_8h.html#a4bae67fd4823619e3aa810feaf68e93b">U8G_NOINLINE</a>;
<a name="l02865"></a><a class="code" href="u8glib__ex_8h.html#ae8d670dfb6bb613b598305378516398c">02865</a> int8_t <a class="code" href="u8glib__ex_8h.html#ae8d670dfb6bb613b598305378516398c">u8g_GetFontBBXOffX</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g)
<a name="l02866"></a>02866 {
<a name="l02867"></a>02867   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#a1b890825c5add336d21257aa702ea290">u8g_font_GetBBXOffX</a>(u8g-&gt;<a class="code" href="struct__u8g__t.html#a098e0a80024577b9bb8644bd1fcc2aeb">font</a>);
<a name="l02868"></a>02868 }
<a name="l02869"></a>02869 
<a name="l02870"></a>02870 int8_t <a class="code" href="u8glib__ex_8h.html#a311d9f0381fe5a057e7b6b80383e7a85">u8g_GetFontBBXOffY</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g) <a class="code" href="u8glib__ex_8h.html#a4bae67fd4823619e3aa810feaf68e93b">U8G_NOINLINE</a>;
<a name="l02871"></a><a class="code" href="u8glib__ex_8h.html#a311d9f0381fe5a057e7b6b80383e7a85">02871</a> int8_t <a class="code" href="u8glib__ex_8h.html#a311d9f0381fe5a057e7b6b80383e7a85">u8g_GetFontBBXOffY</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g)
<a name="l02872"></a>02872 {
<a name="l02873"></a>02873   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#a81878c13b870e8ac8c33c4df8797e43f">u8g_font_GetBBXOffY</a>(u8g-&gt;<a class="code" href="struct__u8g__t.html#a098e0a80024577b9bb8644bd1fcc2aeb">font</a>);
<a name="l02874"></a>02874 }
<a name="l02875"></a>02875 
<a name="l02876"></a>02876 uint8_t <a class="code" href="u8glib__ex_8h.html#a913559176a1d5eae233b05bf98aa5e1b">u8g_GetFontCapitalAHeight</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g) <a class="code" href="u8glib__ex_8h.html#a4bae67fd4823619e3aa810feaf68e93b">U8G_NOINLINE</a>;
<a name="l02877"></a><a class="code" href="u8glib__ex_8h.html#a913559176a1d5eae233b05bf98aa5e1b">02877</a> uint8_t <a class="code" href="u8glib__ex_8h.html#a913559176a1d5eae233b05bf98aa5e1b">u8g_GetFontCapitalAHeight</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g)
<a name="l02878"></a>02878 {
<a name="l02879"></a>02879   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#adef4a3f7491cf25c21212d15052e0ba4">u8g_font_GetCapitalAHeight</a>(u8g-&gt;<a class="code" href="struct__u8g__t.html#a098e0a80024577b9bb8644bd1fcc2aeb">font</a>);
<a name="l02880"></a>02880 }
<a name="l02881"></a>02881 
<a name="l02882"></a>02882 <span class="comment">/*========================================================================*/</span>
<a name="l02883"></a>02883 <span class="comment">/* glyph handling */</span>
<a name="l02884"></a>02884 
<a name="l02885"></a><a class="code" href="u8glib__ex_8h.html#aa8422ac61fcf429185bfa11956e86e66">02885</a> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#aa8422ac61fcf429185bfa11956e86e66">u8g_CopyGlyphDataToCache</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_glyph_t g)
<a name="l02886"></a>02886 {
<a name="l02887"></a>02887   uint8_t tmp;
<a name="l02888"></a>02888   <span class="keywordflow">switch</span>( <a class="code" href="u8glib__ex_8h.html#ad85eb74dabd39bef01ec6c85d68bf0bc">u8g_font_GetFormat</a>(u8g-&gt;<a class="code" href="struct__u8g__t.html#a098e0a80024577b9bb8644bd1fcc2aeb">font</a>) )
<a name="l02889"></a>02889   {
<a name="l02890"></a>02890     <span class="keywordflow">case</span> 0:
<a name="l02891"></a>02891     <span class="keywordflow">case</span> 2:
<a name="l02892"></a>02892   <span class="comment">/*</span>
<a name="l02893"></a>02893 <span class="comment">    format 0</span>
<a name="l02894"></a>02894 <span class="comment">    glyph information</span>
<a name="l02895"></a>02895 <span class="comment">    offset</span>
<a name="l02896"></a>02896 <span class="comment">    0             BBX width                                       unsigned</span>
<a name="l02897"></a>02897 <span class="comment">    1             BBX height                                      unsigned</span>
<a name="l02898"></a>02898 <span class="comment">    2             data size                                          unsigned    (BBX width + 7)/8 * BBX height</span>
<a name="l02899"></a>02899 <span class="comment">    3             DWIDTH                                          signed</span>
<a name="l02900"></a>02900 <span class="comment">    4             BBX xoffset                                    signed</span>
<a name="l02901"></a>02901 <span class="comment">    5             BBX yoffset                                    signed</span>
<a name="l02902"></a>02902 <span class="comment">  byte 0 == 255 indicates empty glyph</span>
<a name="l02903"></a>02903 <span class="comment">  */</span>
<a name="l02904"></a>02904       u8g-&gt;<a class="code" href="struct__u8g__t.html#a46729652917f79624a7d0509f5236a08">glyph_width</a> =  <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>( ((u8g_pgm_uint8_t *)g) + 0 );
<a name="l02905"></a>02905       u8g-&gt;<a class="code" href="struct__u8g__t.html#a5ceb900871cf8b7c88050f2cbc3a09e0">glyph_height</a> =  <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>( ((u8g_pgm_uint8_t *)g) + 1 );
<a name="l02906"></a>02906       u8g-&gt;<a class="code" href="struct__u8g__t.html#a0047ff5ea98551bea150fb5c60f6a5ef">glyph_dx</a> =  <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>( ((u8g_pgm_uint8_t *)g) + 3 );
<a name="l02907"></a>02907       u8g-&gt;<a class="code" href="struct__u8g__t.html#a3bb3244ddc11d85c868e430e257a0ed8">glyph_x</a> =  <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>( ((u8g_pgm_uint8_t *)g) + 4 );
<a name="l02908"></a>02908       u8g-&gt;<a class="code" href="struct__u8g__t.html#adedc940cd2a0a208f0ae275953228b53">glyph_y</a> =  <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>( ((u8g_pgm_uint8_t *)g) + 5 );
<a name="l02909"></a>02909       <span class="keywordflow">break</span>;
<a name="l02910"></a>02910     <span class="keywordflow">case</span> 1:
<a name="l02911"></a>02911     <span class="keywordflow">default</span>:
<a name="l02912"></a>02912       <span class="comment">/*</span>
<a name="l02913"></a>02913 <span class="comment">format 1</span>
<a name="l02914"></a>02914 <span class="comment">  0             BBX xoffset                                    signed   --&gt; upper 4 Bit</span>
<a name="l02915"></a>02915 <span class="comment">  0             BBX yoffset                                    signed --&gt; lower 4 Bit</span>
<a name="l02916"></a>02916 <span class="comment">  1             BBX width                                       unsigned --&gt; upper 4 Bit</span>
<a name="l02917"></a>02917 <span class="comment">  1             BBX height                                      unsigned --&gt; lower 4 Bit</span>
<a name="l02918"></a>02918 <span class="comment">  2             data size                                           unsigned -(BBX width + 7)/8 * BBX height  --&gt; lower 4 Bit</span>
<a name="l02919"></a>02919 <span class="comment">  2             DWIDTH                                          signed --&gt; upper  4 Bit</span>
<a name="l02920"></a>02920 <span class="comment">  byte 0 == 255 indicates empty glyph</span>
<a name="l02921"></a>02921 <span class="comment">      */</span>
<a name="l02922"></a>02922 
<a name="l02923"></a>02923       tmp = <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>( ((u8g_pgm_uint8_t *)g) + 0 );
<a name="l02924"></a>02924       u8g-&gt;<a class="code" href="struct__u8g__t.html#adedc940cd2a0a208f0ae275953228b53">glyph_y</a> =  tmp &amp; 15;
<a name="l02925"></a>02925       u8g-&gt;<a class="code" href="struct__u8g__t.html#adedc940cd2a0a208f0ae275953228b53">glyph_y</a>-=2;
<a name="l02926"></a>02926       tmp &gt;&gt;= 4;
<a name="l02927"></a>02927       u8g-&gt;<a class="code" href="struct__u8g__t.html#a3bb3244ddc11d85c868e430e257a0ed8">glyph_x</a> =  tmp;
<a name="l02928"></a>02928 
<a name="l02929"></a>02929       tmp = <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>( ((u8g_pgm_uint8_t *)g) + 1 );
<a name="l02930"></a>02930       u8g-&gt;<a class="code" href="struct__u8g__t.html#a5ceb900871cf8b7c88050f2cbc3a09e0">glyph_height</a> =  tmp &amp; 15;
<a name="l02931"></a>02931       tmp &gt;&gt;= 4;
<a name="l02932"></a>02932       u8g-&gt;<a class="code" href="struct__u8g__t.html#a46729652917f79624a7d0509f5236a08">glyph_width</a> =  tmp;
<a name="l02933"></a>02933 
<a name="l02934"></a>02934       tmp = <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>( ((u8g_pgm_uint8_t *)g) + 2 );
<a name="l02935"></a>02935       tmp &gt;&gt;= 4;
<a name="l02936"></a>02936       u8g-&gt;<a class="code" href="struct__u8g__t.html#a0047ff5ea98551bea150fb5c60f6a5ef">glyph_dx</a> = tmp;
<a name="l02937"></a>02937 
<a name="l02938"></a>02938 
<a name="l02939"></a>02939       <span class="keywordflow">break</span>;
<a name="l02940"></a>02940   }
<a name="l02941"></a>02941 }
<a name="l02942"></a>02942 
<a name="l02943"></a>02943 <span class="comment">//void u8g_FillEmptyGlyphCache(u8g_t *u8g) U8G_NOINLINE;</span>
<a name="l02944"></a><a class="code" href="u8glib__ex_8h.html#aa97a83b78d5d007938e1ba9250a51b59">02944</a> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#aa97a83b78d5d007938e1ba9250a51b59">u8g_FillEmptyGlyphCache</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g)
<a name="l02945"></a>02945 {
<a name="l02946"></a>02946   u8g-&gt;<a class="code" href="struct__u8g__t.html#a0047ff5ea98551bea150fb5c60f6a5ef">glyph_dx</a> = 0;
<a name="l02947"></a>02947   u8g-&gt;<a class="code" href="struct__u8g__t.html#a46729652917f79624a7d0509f5236a08">glyph_width</a> = 0;
<a name="l02948"></a>02948   u8g-&gt;<a class="code" href="struct__u8g__t.html#a5ceb900871cf8b7c88050f2cbc3a09e0">glyph_height</a> = 0;
<a name="l02949"></a>02949   u8g-&gt;<a class="code" href="struct__u8g__t.html#a3bb3244ddc11d85c868e430e257a0ed8">glyph_x</a> = 0;
<a name="l02950"></a>02950   u8g-&gt;<a class="code" href="struct__u8g__t.html#adedc940cd2a0a208f0ae275953228b53">glyph_y</a> = 0;
<a name="l02951"></a>02951 }
<a name="l02952"></a>02952 
<a name="l02953"></a>02953 <span class="comment">/*</span>
<a name="l02954"></a>02954 <span class="comment">  Find (with some speed optimization) and return a pointer to the glyph data structure</span>
<a name="l02955"></a>02955 <span class="comment">  Also uncompress (format 1) and copy the content of the data structure to the u8g structure</span>
<a name="l02956"></a>02956 <span class="comment">*/</span>
<a name="l02957"></a><a class="code" href="u8glib__ex_8h.html#a560080c4acbd664f54b8a35922b40523">02957</a> u8g_glyph_t <a class="code" href="u8glib__ex_8h.html#a560080c4acbd664f54b8a35922b40523">u8g_GetGlyph</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t requested_encoding)
<a name="l02958"></a>02958 {
<a name="l02959"></a>02959   uint8_t *p = (uint8_t *)(u8g-&gt;<a class="code" href="struct__u8g__t.html#a098e0a80024577b9bb8644bd1fcc2aeb">font</a>);
<a name="l02960"></a>02960   uint8_t font_format = <a class="code" href="u8glib__ex_8h.html#ad85eb74dabd39bef01ec6c85d68bf0bc">u8g_font_GetFormat</a>(u8g-&gt;<a class="code" href="struct__u8g__t.html#a098e0a80024577b9bb8644bd1fcc2aeb">font</a>);
<a name="l02961"></a>02961   uint8_t data_structure_size = <a class="code" href="u8glib__ex_8h.html#a7620189789aaa601a6f90f726ee5a90d">u8g_font_GetFontGlyphStructureSize</a>(u8g-&gt;<a class="code" href="struct__u8g__t.html#a098e0a80024577b9bb8644bd1fcc2aeb">font</a>);
<a name="l02962"></a>02962   uint8_t start, end;
<a name="l02963"></a>02963   uint16_t pos;
<a name="l02964"></a>02964   uint8_t i;
<a name="l02965"></a>02965   uint8_t mask = 255;
<a name="l02966"></a>02966 
<a name="l02967"></a>02967   <span class="keywordflow">if</span> ( font_format == 1 )
<a name="l02968"></a>02968     mask = 15;
<a name="l02969"></a>02969 
<a name="l02970"></a>02970   start = <a class="code" href="u8glib__ex_8h.html#afa56f5a047aa85818332363c16a2c2c1">u8g_font_GetFontStartEncoding</a>(u8g-&gt;<a class="code" href="struct__u8g__t.html#a098e0a80024577b9bb8644bd1fcc2aeb">font</a>);
<a name="l02971"></a>02971   end = <a class="code" href="u8glib__ex_8h.html#ae4c0c24bb21f17d85703ce058525b3bc">u8g_font_GetFontEndEncoding</a>(u8g-&gt;<a class="code" href="struct__u8g__t.html#a098e0a80024577b9bb8644bd1fcc2aeb">font</a>);
<a name="l02972"></a>02972 
<a name="l02973"></a>02973   pos = <a class="code" href="u8glib__ex_8h.html#a28c39858a8e68776b459fa1adca80ce6">u8g_font_GetEncoding97Pos</a>(u8g-&gt;<a class="code" href="struct__u8g__t.html#a098e0a80024577b9bb8644bd1fcc2aeb">font</a>);
<a name="l02974"></a>02974   <span class="keywordflow">if</span> ( requested_encoding &gt;= 97 &amp;&amp; pos &gt; 0 )
<a name="l02975"></a>02975   {
<a name="l02976"></a>02976     p+= pos;
<a name="l02977"></a>02977     start = 97;
<a name="l02978"></a>02978   }
<a name="l02979"></a>02979   <span class="keywordflow">else</span>
<a name="l02980"></a>02980   {
<a name="l02981"></a>02981     pos = <a class="code" href="u8glib__ex_8h.html#aa5584d17025c286b6fe57f8ed7ac04a7">u8g_font_GetEncoding65Pos</a>(u8g-&gt;<a class="code" href="struct__u8g__t.html#a098e0a80024577b9bb8644bd1fcc2aeb">font</a>);
<a name="l02982"></a>02982     <span class="keywordflow">if</span> ( requested_encoding &gt;= 65 &amp;&amp; pos &gt; 0 )
<a name="l02983"></a>02983     {
<a name="l02984"></a>02984       p+= pos;
<a name="l02985"></a>02985       start = 65;
<a name="l02986"></a>02986     }
<a name="l02987"></a>02987     <span class="keywordflow">else</span>
<a name="l02988"></a>02988       p += <a class="code" href="u8glib__ex_8h.html#aafb132a7935efdd220afcf2654050603">U8G_FONT_DATA_STRUCT_SIZE</a>;       <span class="comment">/* skip font general information */</span>
<a name="l02989"></a>02989   }
<a name="l02990"></a>02990 
<a name="l02991"></a>02991   <span class="keywordflow">if</span> ( requested_encoding &gt; end )
<a name="l02992"></a>02992   {
<a name="l02993"></a>02993     <a class="code" href="u8glib__ex_8h.html#aa97a83b78d5d007938e1ba9250a51b59">u8g_FillEmptyGlyphCache</a>(u8g);
<a name="l02994"></a>02994     <span class="keywordflow">return</span> NULL;                      <span class="comment">/* not found */</span>
<a name="l02995"></a>02995   }
<a name="l02996"></a>02996 
<a name="l02997"></a>02997   i = start;
<a name="l02998"></a>02998   <span class="keywordflow">if</span> ( i &lt;= end )
<a name="l02999"></a>02999   {
<a name="l03000"></a>03000     <span class="keywordflow">for</span>(;;)
<a name="l03001"></a>03001     {
<a name="l03002"></a>03002       <span class="keywordflow">if</span> ( <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>((u8g_pgm_uint8_t *)(p)) == 255 )
<a name="l03003"></a>03003       {
<a name="l03004"></a>03004         p += 1;
<a name="l03005"></a>03005       }
<a name="l03006"></a>03006       <span class="keywordflow">else</span>
<a name="l03007"></a>03007       {
<a name="l03008"></a>03008         <span class="keywordflow">if</span> ( i == requested_encoding )
<a name="l03009"></a>03009         {
<a name="l03010"></a>03010           <a class="code" href="u8glib__ex_8h.html#aa8422ac61fcf429185bfa11956e86e66">u8g_CopyGlyphDataToCache</a>(u8g, p);
<a name="l03011"></a>03011           <span class="keywordflow">return</span> p;
<a name="l03012"></a>03012         }
<a name="l03013"></a>03013         p += <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>( ((u8g_pgm_uint8_t *)(p)) + 2 ) &amp; mask;
<a name="l03014"></a>03014         p += data_structure_size;
<a name="l03015"></a>03015       }
<a name="l03016"></a>03016       <span class="keywordflow">if</span> ( i == end )
<a name="l03017"></a>03017         <span class="keywordflow">break</span>;
<a name="l03018"></a>03018       i++;
<a name="l03019"></a>03019     }
<a name="l03020"></a>03020   }
<a name="l03021"></a>03021 
<a name="l03022"></a>03022   <a class="code" href="u8glib__ex_8h.html#aa97a83b78d5d007938e1ba9250a51b59">u8g_FillEmptyGlyphCache</a>(u8g);
<a name="l03023"></a>03023 
<a name="l03024"></a>03024   <span class="keywordflow">return</span> NULL;
<a name="l03025"></a>03025 }
<a name="l03026"></a>03026 
<a name="l03027"></a><a class="code" href="u8glib__ex_8h.html#a29848f5a00bb679d38c508713c573651">03027</a> uint8_t <a class="code" href="u8glib__ex_8h.html#a29848f5a00bb679d38c508713c573651">u8g_IsGlyph</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t requested_encoding)
<a name="l03028"></a>03028 {
<a name="l03029"></a>03029   <span class="keywordflow">if</span> ( <a class="code" href="u8glib__ex_8h.html#a560080c4acbd664f54b8a35922b40523">u8g_GetGlyph</a>(u8g, requested_encoding) != NULL )
<a name="l03030"></a>03030     <span class="keywordflow">return</span> 1;
<a name="l03031"></a>03031   <span class="keywordflow">return</span> 0;
<a name="l03032"></a>03032 }
<a name="l03033"></a>03033 
<a name="l03034"></a><a class="code" href="u8glib__ex_8h.html#ade9b05bde61f7a08cf4e9df2c7e108ef">03034</a> int8_t <a class="code" href="u8glib__ex_8h.html#ade9b05bde61f7a08cf4e9df2c7e108ef">u8g_GetGlyphDeltaX</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t requested_encoding)
<a name="l03035"></a>03035 {
<a name="l03036"></a>03036   <span class="keywordflow">if</span> ( <a class="code" href="u8glib__ex_8h.html#a560080c4acbd664f54b8a35922b40523">u8g_GetGlyph</a>(u8g, requested_encoding) == NULL )
<a name="l03037"></a>03037     <span class="keywordflow">return</span> 0;  <span class="comment">/* should never happen, so return something */</span>
<a name="l03038"></a>03038   <span class="keywordflow">return</span> u8g-&gt;<a class="code" href="struct__u8g__t.html#a0047ff5ea98551bea150fb5c60f6a5ef">glyph_dx</a>;
<a name="l03039"></a>03039 }
<a name="l03040"></a>03040 
<a name="l03041"></a>03041 
<a name="l03042"></a>03042 <span class="comment">/*========================================================================*/</span>
<a name="l03043"></a>03043 <span class="comment">/* glyph drawing procedures */</span>
<a name="l03044"></a>03044 
<a name="l03045"></a>03045 <span class="preprocessor">#ifdef OBSOLETE</span>
<a name="l03046"></a>03046 <span class="preprocessor"></span><span class="comment">/*</span>
<a name="l03047"></a>03047 <span class="comment">  Draw a glyph</span>
<a name="l03048"></a>03048 <span class="comment">  x,y: left baseline position of the glyph</span>
<a name="l03049"></a>03049 <span class="comment">*/</span>
<a name="l03050"></a>03050 int8_t <a class="code" href="u8glib__ex_8h.html#a1cb4e3056dce05339f126e0d8835123b">u8g_DrawGlyphDir</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t encoding)
<a name="l03051"></a>03051 {
<a name="l03052"></a>03052   u8g_glyph_t g;
<a name="l03053"></a>03053   uint8_t w, h, i, j;
<a name="l03054"></a>03054   <span class="keyword">const</span> u8g_pgm_uint8_t *data;
<a name="l03055"></a>03055   uint8_t bytes_per_line;
<a name="l03056"></a>03056   u8g_uint_t ix, iy;
<a name="l03057"></a>03057 
<a name="l03058"></a>03058   g = <a class="code" href="u8glib__ex_8h.html#a560080c4acbd664f54b8a35922b40523">u8g_GetGlyph</a>(u8g, encoding);
<a name="l03059"></a>03059   <span class="keywordflow">if</span> ( g == NULL  )
<a name="l03060"></a>03060     <span class="keywordflow">return</span> 0;
<a name="l03061"></a>03061   w = u8g-&gt;<a class="code" href="struct__u8g__t.html#a46729652917f79624a7d0509f5236a08">glyph_width</a>;
<a name="l03062"></a>03062   h = u8g-&gt;<a class="code" href="struct__u8g__t.html#a5ceb900871cf8b7c88050f2cbc3a09e0">glyph_height</a>;
<a name="l03063"></a>03063 
<a name="l03064"></a>03064   bytes_per_line = w;
<a name="l03065"></a>03065   bytes_per_line += 7;
<a name="l03066"></a>03066   bytes_per_line /= 8;
<a name="l03067"></a>03067 
<a name="l03068"></a>03068   data = <a class="code" href="u8glib__ex_8h.html#a66c59a617852db487bab9d5d0503d624">u8g_font_GetGlyphDataStart</a>(u8g-&gt;<a class="code" href="struct__u8g__t.html#a098e0a80024577b9bb8644bd1fcc2aeb">font</a>, g);
<a name="l03069"></a>03069 
<a name="l03070"></a>03070   <span class="keywordflow">switch</span>(dir)
<a name="l03071"></a>03071   {
<a name="l03072"></a>03072     <span class="keywordflow">case</span> 0:
<a name="l03073"></a>03073       x += u8g-&gt;<a class="code" href="struct__u8g__t.html#a3bb3244ddc11d85c868e430e257a0ed8">glyph_x</a>;
<a name="l03074"></a>03074       y -= u8g-&gt;<a class="code" href="struct__u8g__t.html#adedc940cd2a0a208f0ae275953228b53">glyph_y</a>;
<a name="l03075"></a>03075       y--;
<a name="l03076"></a>03076       <span class="comment">//u8g_DrawFrame(u8g, x, y-h+1, w, h);</span>
<a name="l03077"></a>03077       <span class="keywordflow">if</span> ( <a class="code" href="u8glib__ex_8h.html#a4ed53b97d1b77b8ecaff352f5b1c6161">u8g_IsBBXIntersection</a>(u8g, x, y-h+1, w, h) == 0 )
<a name="l03078"></a>03078         <span class="keywordflow">return</span> u8g-&gt;<a class="code" href="struct__u8g__t.html#a0047ff5ea98551bea150fb5c60f6a5ef">glyph_dx</a>;
<a name="l03079"></a>03079 
<a name="l03080"></a>03080       iy = y;
<a name="l03081"></a>03081       iy -= h;
<a name="l03082"></a>03082       iy++;
<a name="l03083"></a>03083 
<a name="l03084"></a>03084       <span class="keywordflow">for</span>( j = 0; j &lt; h; j++ )
<a name="l03085"></a>03085       {
<a name="l03086"></a>03086         ix = x;
<a name="l03087"></a>03087         <span class="keywordflow">for</span>( i = 0; i &lt; bytes_per_line; i++ )
<a name="l03088"></a>03088         {
<a name="l03089"></a>03089           <a class="code" href="u8glib__ex_8h.html#a541bde03a368db9b3bd043ce96100133">u8g_Draw8Pixel</a>(u8g, ix, iy, dir, <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>(data));
<a name="l03090"></a>03090           data++;
<a name="l03091"></a>03091           ix+=8;
<a name="l03092"></a>03092         }
<a name="l03093"></a>03093         iy++;
<a name="l03094"></a>03094       }
<a name="l03095"></a>03095       <span class="keywordflow">break</span>;
<a name="l03096"></a>03096     <span class="keywordflow">case</span> 1:
<a name="l03097"></a>03097       x += u8g-&gt;<a class="code" href="struct__u8g__t.html#adedc940cd2a0a208f0ae275953228b53">glyph_y</a>;
<a name="l03098"></a>03098       x++;
<a name="l03099"></a>03099       y += u8g-&gt;<a class="code" href="struct__u8g__t.html#a3bb3244ddc11d85c868e430e257a0ed8">glyph_x</a>;
<a name="l03100"></a>03100       <span class="comment">//printf(&quot;enc %d, dir %d, x %d, y %d, w %d, h %d\n&quot;, encoding, dir, x, y, w, h);</span>
<a name="l03101"></a>03101       <span class="comment">//u8g_DrawFrame(u8g, x, y, h, w);</span>
<a name="l03102"></a>03102       <span class="keywordflow">if</span> ( <a class="code" href="u8glib__ex_8h.html#a4ed53b97d1b77b8ecaff352f5b1c6161">u8g_IsBBXIntersection</a>(u8g, x, y, h, w) == 0 )
<a name="l03103"></a>03103         <span class="keywordflow">return</span> u8g-&gt;<a class="code" href="struct__u8g__t.html#a0047ff5ea98551bea150fb5c60f6a5ef">glyph_dx</a>;
<a name="l03104"></a>03104 
<a name="l03105"></a>03105       ix = x;
<a name="l03106"></a>03106       ix += h;
<a name="l03107"></a>03107       ix--;
<a name="l03108"></a>03108       <span class="keywordflow">for</span>( j = 0; j &lt; h; j++ )
<a name="l03109"></a>03109       {
<a name="l03110"></a>03110         iy = y;
<a name="l03111"></a>03111         <span class="keywordflow">for</span>( i = 0; i &lt; bytes_per_line; i++ )
<a name="l03112"></a>03112         {
<a name="l03113"></a>03113           <a class="code" href="u8glib__ex_8h.html#a541bde03a368db9b3bd043ce96100133">u8g_Draw8Pixel</a>(u8g, ix, iy, dir, <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>(data));
<a name="l03114"></a>03114           data++;
<a name="l03115"></a>03115           iy+=8;
<a name="l03116"></a>03116         }
<a name="l03117"></a>03117         ix--;
<a name="l03118"></a>03118       }
<a name="l03119"></a>03119       <span class="keywordflow">break</span>;
<a name="l03120"></a>03120     <span class="keywordflow">case</span> 2:
<a name="l03121"></a>03121       x -= u8g-&gt;<a class="code" href="struct__u8g__t.html#a3bb3244ddc11d85c868e430e257a0ed8">glyph_x</a>;
<a name="l03122"></a>03122       y += u8g-&gt;<a class="code" href="struct__u8g__t.html#adedc940cd2a0a208f0ae275953228b53">glyph_y</a>;
<a name="l03123"></a>03123       y++;
<a name="l03124"></a>03124       <span class="keywordflow">if</span> ( <a class="code" href="u8glib__ex_8h.html#a4ed53b97d1b77b8ecaff352f5b1c6161">u8g_IsBBXIntersection</a>(u8g, x-w-1, y, w, h) == 0 )
<a name="l03125"></a>03125         <span class="keywordflow">return</span> u8g-&gt;<a class="code" href="struct__u8g__t.html#a0047ff5ea98551bea150fb5c60f6a5ef">glyph_dx</a>;
<a name="l03126"></a>03126 
<a name="l03127"></a>03127       iy = y;
<a name="l03128"></a>03128       iy += h;
<a name="l03129"></a>03129       iy--;
<a name="l03130"></a>03130       <span class="keywordflow">for</span>( j = 0; j &lt; h; j++ )
<a name="l03131"></a>03131       {
<a name="l03132"></a>03132         ix = x;
<a name="l03133"></a>03133         <span class="keywordflow">for</span>( i = 0; i &lt; bytes_per_line; i++ )
<a name="l03134"></a>03134         {
<a name="l03135"></a>03135           <a class="code" href="u8glib__ex_8h.html#a541bde03a368db9b3bd043ce96100133">u8g_Draw8Pixel</a>(u8g, ix, iy, dir, <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>(data));
<a name="l03136"></a>03136           data++;
<a name="l03137"></a>03137           ix-=8;
<a name="l03138"></a>03138         }
<a name="l03139"></a>03139         iy--;
<a name="l03140"></a>03140       }
<a name="l03141"></a>03141       <span class="keywordflow">break</span>;
<a name="l03142"></a>03142     <span class="keywordflow">case</span> 3:
<a name="l03143"></a>03143       x -= u8g-&gt;<a class="code" href="struct__u8g__t.html#adedc940cd2a0a208f0ae275953228b53">glyph_y</a>;
<a name="l03144"></a>03144       x--;
<a name="l03145"></a>03145       y -= u8g-&gt;<a class="code" href="struct__u8g__t.html#a3bb3244ddc11d85c868e430e257a0ed8">glyph_x</a>;
<a name="l03146"></a>03146 
<a name="l03147"></a>03147       <span class="keywordflow">if</span> ( <a class="code" href="u8glib__ex_8h.html#a4ed53b97d1b77b8ecaff352f5b1c6161">u8g_IsBBXIntersection</a>(u8g, x-h-1, y-w-1, h, w) == 0 )
<a name="l03148"></a>03148         <span class="keywordflow">return</span> u8g-&gt;<a class="code" href="struct__u8g__t.html#a0047ff5ea98551bea150fb5c60f6a5ef">glyph_dx</a>;
<a name="l03149"></a>03149 
<a name="l03150"></a>03150       ix = x;
<a name="l03151"></a>03151       ix -= h;
<a name="l03152"></a>03152       ix++;
<a name="l03153"></a>03153 
<a name="l03154"></a>03154       <span class="keywordflow">for</span>( j = 0; j &lt; h; j++ )
<a name="l03155"></a>03155       {
<a name="l03156"></a>03156         iy = y;
<a name="l03157"></a>03157         <span class="keywordflow">for</span>( i = 0; i &lt; bytes_per_line; i++ )
<a name="l03158"></a>03158         {
<a name="l03159"></a>03159           <a class="code" href="u8glib__ex_8h.html#a541bde03a368db9b3bd043ce96100133">u8g_Draw8Pixel</a>(u8g, ix, iy, dir, <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>(data));
<a name="l03160"></a>03160           data++;
<a name="l03161"></a>03161           iy-=8;
<a name="l03162"></a>03162         }
<a name="l03163"></a>03163         ix++;
<a name="l03164"></a>03164       }
<a name="l03165"></a>03165       <span class="keywordflow">break</span>;
<a name="l03166"></a>03166   }
<a name="l03167"></a>03167   <span class="keywordflow">return</span> u8g-&gt;<a class="code" href="struct__u8g__t.html#a0047ff5ea98551bea150fb5c60f6a5ef">glyph_dx</a>;
<a name="l03168"></a>03168 }
<a name="l03169"></a>03169 <span class="preprocessor">#endif</span>
<a name="l03170"></a>03170 <span class="preprocessor"></span>
<a name="l03171"></a><a class="code" href="u8glib__ex_8h.html#a2c7e5283135e5644c297b902c1745434">03171</a> int8_t <a class="code" href="u8glib__ex_8h.html#a2c7e5283135e5644c297b902c1745434">u8g_draw_glyph</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding)
<a name="l03172"></a>03172 {
<a name="l03173"></a>03173   <span class="keyword">const</span> u8g_pgm_uint8_t *data;
<a name="l03174"></a>03174   uint8_t w, h;
<a name="l03175"></a>03175   uint8_t i, j;
<a name="l03176"></a>03176   u8g_uint_t ix, iy;
<a name="l03177"></a>03177 
<a name="l03178"></a>03178   {
<a name="l03179"></a>03179     u8g_glyph_t g = <a class="code" href="u8glib__ex_8h.html#a560080c4acbd664f54b8a35922b40523">u8g_GetGlyph</a>(u8g, encoding);
<a name="l03180"></a>03180     <span class="keywordflow">if</span> ( g == NULL  )
<a name="l03181"></a>03181       <span class="keywordflow">return</span> 0;
<a name="l03182"></a>03182     data = <a class="code" href="u8glib__ex_8h.html#a66c59a617852db487bab9d5d0503d624">u8g_font_GetGlyphDataStart</a>(u8g-&gt;<a class="code" href="struct__u8g__t.html#a098e0a80024577b9bb8644bd1fcc2aeb">font</a>, g);
<a name="l03183"></a>03183   }
<a name="l03184"></a>03184 
<a name="l03185"></a>03185   w = u8g-&gt;<a class="code" href="struct__u8g__t.html#a46729652917f79624a7d0509f5236a08">glyph_width</a>;
<a name="l03186"></a>03186   h = u8g-&gt;<a class="code" href="struct__u8g__t.html#a5ceb900871cf8b7c88050f2cbc3a09e0">glyph_height</a>;
<a name="l03187"></a>03187 
<a name="l03188"></a>03188   x += u8g-&gt;<a class="code" href="struct__u8g__t.html#a3bb3244ddc11d85c868e430e257a0ed8">glyph_x</a>;
<a name="l03189"></a>03189   y -= u8g-&gt;<a class="code" href="struct__u8g__t.html#adedc940cd2a0a208f0ae275953228b53">glyph_y</a>;
<a name="l03190"></a>03190   y--;
<a name="l03191"></a>03191 
<a name="l03192"></a>03192   <span class="keywordflow">if</span> ( <a class="code" href="u8glib__ex_8h.html#a4ed53b97d1b77b8ecaff352f5b1c6161">u8g_IsBBXIntersection</a>(u8g, x, y-h+1, w, h) == 0 )
<a name="l03193"></a>03193     <span class="keywordflow">return</span> u8g-&gt;<a class="code" href="struct__u8g__t.html#a0047ff5ea98551bea150fb5c60f6a5ef">glyph_dx</a>;
<a name="l03194"></a>03194 
<a name="l03195"></a>03195   <span class="comment">/* now, w is reused as bytes per line */</span>
<a name="l03196"></a>03196   w += 7;
<a name="l03197"></a>03197   w /= 8;
<a name="l03198"></a>03198 
<a name="l03199"></a>03199   iy = y;
<a name="l03200"></a>03200   iy -= h;
<a name="l03201"></a>03201   iy++;
<a name="l03202"></a>03202 
<a name="l03203"></a>03203   <span class="keywordflow">for</span>( j = 0; j &lt; h; j++ )
<a name="l03204"></a>03204   {
<a name="l03205"></a>03205     ix = x;
<a name="l03206"></a>03206     <span class="keywordflow">for</span>( i = 0; i &lt; w; i++ )
<a name="l03207"></a>03207     {
<a name="l03208"></a>03208       <a class="code" href="u8glib__ex_8h.html#a541bde03a368db9b3bd043ce96100133">u8g_Draw8Pixel</a>(u8g, ix, iy, 0, <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>(data));
<a name="l03209"></a>03209       data++;
<a name="l03210"></a>03210       ix+=8;
<a name="l03211"></a>03211     }
<a name="l03212"></a>03212     iy++;
<a name="l03213"></a>03213   }
<a name="l03214"></a>03214   <span class="keywordflow">return</span> u8g-&gt;<a class="code" href="struct__u8g__t.html#a0047ff5ea98551bea150fb5c60f6a5ef">glyph_dx</a>;
<a name="l03215"></a>03215 }
<a name="l03216"></a>03216 
<a name="l03217"></a><a class="code" href="u8glib__ex_8h.html#a6e67ebe319a0df35057381b63f65a556">03217</a> int8_t <a class="code" href="u8glib__ex_8h.html#a6e67ebe319a0df35057381b63f65a556">u8g_DrawGlyph</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding)
<a name="l03218"></a>03218 {
<a name="l03219"></a>03219   y += u8g-&gt;<a class="code" href="struct__u8g__t.html#a6be898df5b515d31b02d56adab72cfef">font_calc_vref</a>(u8g);
<a name="l03220"></a>03220   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#a2c7e5283135e5644c297b902c1745434">u8g_draw_glyph</a>(u8g, x, y, encoding);
<a name="l03221"></a>03221 }
<a name="l03222"></a>03222 
<a name="l03223"></a><a class="code" href="u8glib__ex_8h.html#aa1549e9d5c2a9c2bdfd46008593623da">03223</a> int8_t <a class="code" href="u8glib__ex_8h.html#aa1549e9d5c2a9c2bdfd46008593623da">u8g_draw_glyph90</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding)
<a name="l03224"></a>03224 {
<a name="l03225"></a>03225   <span class="keyword">const</span> u8g_pgm_uint8_t *data;
<a name="l03226"></a>03226   uint8_t w, h;
<a name="l03227"></a>03227   uint8_t i, j;
<a name="l03228"></a>03228   u8g_uint_t ix, iy;
<a name="l03229"></a>03229 
<a name="l03230"></a>03230   {
<a name="l03231"></a>03231     u8g_glyph_t g = <a class="code" href="u8glib__ex_8h.html#a560080c4acbd664f54b8a35922b40523">u8g_GetGlyph</a>(u8g, encoding);
<a name="l03232"></a>03232     <span class="keywordflow">if</span> ( g == NULL  )
<a name="l03233"></a>03233       <span class="keywordflow">return</span> 0;
<a name="l03234"></a>03234     data = <a class="code" href="u8glib__ex_8h.html#a66c59a617852db487bab9d5d0503d624">u8g_font_GetGlyphDataStart</a>(u8g-&gt;<a class="code" href="struct__u8g__t.html#a098e0a80024577b9bb8644bd1fcc2aeb">font</a>, g);
<a name="l03235"></a>03235   }
<a name="l03236"></a>03236 
<a name="l03237"></a>03237   w = u8g-&gt;<a class="code" href="struct__u8g__t.html#a46729652917f79624a7d0509f5236a08">glyph_width</a>;
<a name="l03238"></a>03238   h = u8g-&gt;<a class="code" href="struct__u8g__t.html#a5ceb900871cf8b7c88050f2cbc3a09e0">glyph_height</a>;
<a name="l03239"></a>03239 
<a name="l03240"></a>03240   x += u8g-&gt;<a class="code" href="struct__u8g__t.html#adedc940cd2a0a208f0ae275953228b53">glyph_y</a>;
<a name="l03241"></a>03241   x++;
<a name="l03242"></a>03242   y += u8g-&gt;<a class="code" href="struct__u8g__t.html#a3bb3244ddc11d85c868e430e257a0ed8">glyph_x</a>;
<a name="l03243"></a>03243 
<a name="l03244"></a>03244   <span class="keywordflow">if</span> ( <a class="code" href="u8glib__ex_8h.html#a4ed53b97d1b77b8ecaff352f5b1c6161">u8g_IsBBXIntersection</a>(u8g, x, y, h, w) == 0 )
<a name="l03245"></a>03245     <span class="keywordflow">return</span> u8g-&gt;<a class="code" href="struct__u8g__t.html#a0047ff5ea98551bea150fb5c60f6a5ef">glyph_dx</a>;
<a name="l03246"></a>03246 
<a name="l03247"></a>03247   <span class="comment">/* now, w is reused as bytes per line */</span>
<a name="l03248"></a>03248   w += 7;
<a name="l03249"></a>03249   w /= 8;
<a name="l03250"></a>03250 
<a name="l03251"></a>03251   ix = x;
<a name="l03252"></a>03252   ix += h;
<a name="l03253"></a>03253   ix--;
<a name="l03254"></a>03254   <span class="keywordflow">for</span>( j = 0; j &lt; h; j++ )
<a name="l03255"></a>03255   {
<a name="l03256"></a>03256     iy = y;
<a name="l03257"></a>03257     <span class="keywordflow">for</span>( i = 0; i &lt; w; i++ )
<a name="l03258"></a>03258     {
<a name="l03259"></a>03259       <a class="code" href="u8glib__ex_8h.html#a541bde03a368db9b3bd043ce96100133">u8g_Draw8Pixel</a>(u8g, ix, iy, 1, <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>(data));
<a name="l03260"></a>03260       data++;
<a name="l03261"></a>03261       iy+=8;
<a name="l03262"></a>03262     }
<a name="l03263"></a>03263     ix--;
<a name="l03264"></a>03264   }
<a name="l03265"></a>03265   <span class="keywordflow">return</span> u8g-&gt;<a class="code" href="struct__u8g__t.html#a0047ff5ea98551bea150fb5c60f6a5ef">glyph_dx</a>;
<a name="l03266"></a>03266 }
<a name="l03267"></a>03267 
<a name="l03268"></a><a class="code" href="u8glib__ex_8h.html#a48fdfe462530999ea1a6cfc83474b59e">03268</a> int8_t <a class="code" href="u8glib__ex_8h.html#a48fdfe462530999ea1a6cfc83474b59e">u8g_DrawGlyph90</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding)
<a name="l03269"></a>03269 {
<a name="l03270"></a>03270   x -= u8g-&gt;<a class="code" href="struct__u8g__t.html#a6be898df5b515d31b02d56adab72cfef">font_calc_vref</a>(u8g);
<a name="l03271"></a>03271   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#aa1549e9d5c2a9c2bdfd46008593623da">u8g_draw_glyph90</a>(u8g, x, y, encoding);
<a name="l03272"></a>03272 }
<a name="l03273"></a>03273 
<a name="l03274"></a>03274 
<a name="l03275"></a><a class="code" href="u8glib__ex_8h.html#a5e9a63c4ab78741dcea4729873ba99d3">03275</a> int8_t <a class="code" href="u8glib__ex_8h.html#a5e9a63c4ab78741dcea4729873ba99d3">u8g_draw_glyph180</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding)
<a name="l03276"></a>03276 {
<a name="l03277"></a>03277   <span class="keyword">const</span> u8g_pgm_uint8_t *data;
<a name="l03278"></a>03278   uint8_t w, h;
<a name="l03279"></a>03279   uint8_t i, j;
<a name="l03280"></a>03280   u8g_uint_t ix, iy;
<a name="l03281"></a>03281 
<a name="l03282"></a>03282   {
<a name="l03283"></a>03283     u8g_glyph_t g = <a class="code" href="u8glib__ex_8h.html#a560080c4acbd664f54b8a35922b40523">u8g_GetGlyph</a>(u8g, encoding);
<a name="l03284"></a>03284     <span class="keywordflow">if</span> ( g == NULL  )
<a name="l03285"></a>03285       <span class="keywordflow">return</span> 0;
<a name="l03286"></a>03286     data = <a class="code" href="u8glib__ex_8h.html#a66c59a617852db487bab9d5d0503d624">u8g_font_GetGlyphDataStart</a>(u8g-&gt;<a class="code" href="struct__u8g__t.html#a098e0a80024577b9bb8644bd1fcc2aeb">font</a>, g);
<a name="l03287"></a>03287   }
<a name="l03288"></a>03288 
<a name="l03289"></a>03289   w = u8g-&gt;<a class="code" href="struct__u8g__t.html#a46729652917f79624a7d0509f5236a08">glyph_width</a>;
<a name="l03290"></a>03290   h = u8g-&gt;<a class="code" href="struct__u8g__t.html#a5ceb900871cf8b7c88050f2cbc3a09e0">glyph_height</a>;
<a name="l03291"></a>03291 
<a name="l03292"></a>03292   x -= u8g-&gt;<a class="code" href="struct__u8g__t.html#a3bb3244ddc11d85c868e430e257a0ed8">glyph_x</a>;
<a name="l03293"></a>03293   y += u8g-&gt;<a class="code" href="struct__u8g__t.html#adedc940cd2a0a208f0ae275953228b53">glyph_y</a>;
<a name="l03294"></a>03294   y++;
<a name="l03295"></a>03295 
<a name="l03296"></a>03296   <span class="keywordflow">if</span> ( <a class="code" href="u8glib__ex_8h.html#a4ed53b97d1b77b8ecaff352f5b1c6161">u8g_IsBBXIntersection</a>(u8g, x-(w-1), y, w, h) == 0 )
<a name="l03297"></a>03297     <span class="keywordflow">return</span> u8g-&gt;<a class="code" href="struct__u8g__t.html#a0047ff5ea98551bea150fb5c60f6a5ef">glyph_dx</a>;
<a name="l03298"></a>03298 
<a name="l03299"></a>03299   <span class="comment">/* now, w is reused as bytes per line */</span>
<a name="l03300"></a>03300   w += 7;
<a name="l03301"></a>03301   w /= 8;
<a name="l03302"></a>03302 
<a name="l03303"></a>03303   iy = y;
<a name="l03304"></a>03304   iy += h;
<a name="l03305"></a>03305   iy--;
<a name="l03306"></a>03306   <span class="keywordflow">for</span>( j = 0; j &lt; h; j++ )
<a name="l03307"></a>03307   {
<a name="l03308"></a>03308     ix = x;
<a name="l03309"></a>03309     <span class="keywordflow">for</span>( i = 0; i &lt; w; i++ )
<a name="l03310"></a>03310     {
<a name="l03311"></a>03311       <a class="code" href="u8glib__ex_8h.html#a541bde03a368db9b3bd043ce96100133">u8g_Draw8Pixel</a>(u8g, ix, iy, 2, <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>(data));
<a name="l03312"></a>03312       data++;
<a name="l03313"></a>03313       ix-=8;
<a name="l03314"></a>03314     }
<a name="l03315"></a>03315     iy--;
<a name="l03316"></a>03316   }
<a name="l03317"></a>03317   <span class="keywordflow">return</span> u8g-&gt;<a class="code" href="struct__u8g__t.html#a0047ff5ea98551bea150fb5c60f6a5ef">glyph_dx</a>;
<a name="l03318"></a>03318 }
<a name="l03319"></a>03319 
<a name="l03320"></a><a class="code" href="u8glib__ex_8h.html#a61ca7ba0f77bf99f7cc3652b43b87eae">03320</a> int8_t <a class="code" href="u8glib__ex_8h.html#a61ca7ba0f77bf99f7cc3652b43b87eae">u8g_DrawGlyph180</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding)
<a name="l03321"></a>03321 {
<a name="l03322"></a>03322   y -= u8g-&gt;<a class="code" href="struct__u8g__t.html#a6be898df5b515d31b02d56adab72cfef">font_calc_vref</a>(u8g);
<a name="l03323"></a>03323   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#a5e9a63c4ab78741dcea4729873ba99d3">u8g_draw_glyph180</a>(u8g, x, y, encoding);
<a name="l03324"></a>03324 }
<a name="l03325"></a>03325 
<a name="l03326"></a>03326 
<a name="l03327"></a><a class="code" href="u8glib__ex_8h.html#aeb1319026dbcff6f8cba6f21130bbaff">03327</a> int8_t <a class="code" href="u8glib__ex_8h.html#aeb1319026dbcff6f8cba6f21130bbaff">u8g_draw_glyph270</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding)
<a name="l03328"></a>03328 {
<a name="l03329"></a>03329   <span class="keyword">const</span> u8g_pgm_uint8_t *data;
<a name="l03330"></a>03330   uint8_t w, h;
<a name="l03331"></a>03331   uint8_t i, j;
<a name="l03332"></a>03332   u8g_uint_t ix, iy;
<a name="l03333"></a>03333 
<a name="l03334"></a>03334   {
<a name="l03335"></a>03335     u8g_glyph_t g = <a class="code" href="u8glib__ex_8h.html#a560080c4acbd664f54b8a35922b40523">u8g_GetGlyph</a>(u8g, encoding);
<a name="l03336"></a>03336     <span class="keywordflow">if</span> ( g == NULL  )
<a name="l03337"></a>03337       <span class="keywordflow">return</span> 0;
<a name="l03338"></a>03338     data = <a class="code" href="u8glib__ex_8h.html#a66c59a617852db487bab9d5d0503d624">u8g_font_GetGlyphDataStart</a>(u8g-&gt;<a class="code" href="struct__u8g__t.html#a098e0a80024577b9bb8644bd1fcc2aeb">font</a>, g);
<a name="l03339"></a>03339   }
<a name="l03340"></a>03340 
<a name="l03341"></a>03341   w = u8g-&gt;<a class="code" href="struct__u8g__t.html#a46729652917f79624a7d0509f5236a08">glyph_width</a>;
<a name="l03342"></a>03342   h = u8g-&gt;<a class="code" href="struct__u8g__t.html#a5ceb900871cf8b7c88050f2cbc3a09e0">glyph_height</a>;
<a name="l03343"></a>03343 
<a name="l03344"></a>03344   x -= u8g-&gt;<a class="code" href="struct__u8g__t.html#adedc940cd2a0a208f0ae275953228b53">glyph_y</a>;
<a name="l03345"></a>03345   x--;
<a name="l03346"></a>03346   y -= u8g-&gt;<a class="code" href="struct__u8g__t.html#a3bb3244ddc11d85c868e430e257a0ed8">glyph_x</a>;
<a name="l03347"></a>03347 
<a name="l03348"></a>03348   <span class="keywordflow">if</span> ( <a class="code" href="u8glib__ex_8h.html#a4ed53b97d1b77b8ecaff352f5b1c6161">u8g_IsBBXIntersection</a>(u8g, x-(h-1), y-(w-1), h, w) == 0 )
<a name="l03349"></a>03349     <span class="keywordflow">return</span> u8g-&gt;<a class="code" href="struct__u8g__t.html#a0047ff5ea98551bea150fb5c60f6a5ef">glyph_dx</a>;
<a name="l03350"></a>03350 
<a name="l03351"></a>03351 
<a name="l03352"></a>03352   <span class="comment">/* now, w is reused as bytes per line */</span>
<a name="l03353"></a>03353   w += 7;
<a name="l03354"></a>03354   w /= 8;
<a name="l03355"></a>03355 
<a name="l03356"></a>03356   ix = x;
<a name="l03357"></a>03357   ix -= h;
<a name="l03358"></a>03358   ix++;
<a name="l03359"></a>03359 
<a name="l03360"></a>03360   <span class="keywordflow">for</span>( j = 0; j &lt; h; j++ )
<a name="l03361"></a>03361   {
<a name="l03362"></a>03362     iy = y;
<a name="l03363"></a>03363     <span class="keywordflow">for</span>( i = 0; i &lt; w; i++ )
<a name="l03364"></a>03364     {
<a name="l03365"></a>03365       <a class="code" href="u8glib__ex_8h.html#a541bde03a368db9b3bd043ce96100133">u8g_Draw8Pixel</a>(u8g, ix, iy, 3, <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>(data));
<a name="l03366"></a>03366       data++;
<a name="l03367"></a>03367       iy-=8;
<a name="l03368"></a>03368     }
<a name="l03369"></a>03369     ix++;
<a name="l03370"></a>03370   }
<a name="l03371"></a>03371   <span class="keywordflow">return</span> u8g-&gt;<a class="code" href="struct__u8g__t.html#a0047ff5ea98551bea150fb5c60f6a5ef">glyph_dx</a>;
<a name="l03372"></a>03372 }
<a name="l03373"></a>03373 
<a name="l03374"></a><a class="code" href="u8glib__ex_8h.html#a129d05b6808920af0ec5b2cb82e5ea2e">03374</a> int8_t <a class="code" href="u8glib__ex_8h.html#a129d05b6808920af0ec5b2cb82e5ea2e">u8g_DrawGlyph270</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding)
<a name="l03375"></a>03375 {
<a name="l03376"></a>03376   x += u8g-&gt;<a class="code" href="struct__u8g__t.html#a6be898df5b515d31b02d56adab72cfef">font_calc_vref</a>(u8g);
<a name="l03377"></a>03377   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#aeb1319026dbcff6f8cba6f21130bbaff">u8g_draw_glyph270</a>(u8g, x, y, encoding);
<a name="l03378"></a>03378 }
<a name="l03379"></a>03379 
<a name="l03380"></a>03380 
<a name="l03381"></a>03381 
<a name="l03382"></a>03382 <span class="preprocessor">#ifdef OBSOLETE</span>
<a name="l03383"></a>03383 <span class="preprocessor"></span><span class="comment">/*</span>
<a name="l03384"></a>03384 <span class="comment">  Draw a glyph</span>
<a name="l03385"></a>03385 <span class="comment">  x,y: lower left corner of the font bounding box</span>
<a name="l03386"></a>03386 <span class="comment">*/</span>
<a name="l03387"></a>03387 int8_t <a class="code" href="u8glib__ex_8h.html#af65915dbfa8d4d18d12cd2d903cb33bb">u8g_DrawGlyphFontBBX</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t encoding)
<a name="l03388"></a>03388 {
<a name="l03389"></a>03389   <span class="comment">/* TODO: apply &quot;dir&quot; */</span>
<a name="l03390"></a>03390   x -= <a class="code" href="u8glib__ex_8h.html#ae8d670dfb6bb613b598305378516398c">u8g_GetFontBBXOffX</a>(u8g);
<a name="l03391"></a>03391   y += <a class="code" href="u8glib__ex_8h.html#a311d9f0381fe5a057e7b6b80383e7a85">u8g_GetFontBBXOffY</a>(u8g);
<a name="l03392"></a>03392   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#a1cb4e3056dce05339f126e0d8835123b">u8g_DrawGlyphDir</a>(u8g, x, y, dir, encoding);
<a name="l03393"></a>03393 }
<a name="l03394"></a>03394 <span class="preprocessor">#endif</span>
<a name="l03395"></a>03395 <span class="preprocessor"></span>
<a name="l03396"></a>03396 <span class="comment">/*========================================================================*/</span>
<a name="l03397"></a>03397 <span class="comment">/* string drawing procedures */</span>
<a name="l03398"></a>03398 
<a name="l03399"></a>03399 
<a name="l03400"></a><a class="code" href="u8glib__ex_8h.html#a6f9b5dddd95dd74188553ef57cac1b7b">03400</a> u8g_uint_t <a class="code" href="u8glib__ex_8h.html#a6f9b5dddd95dd74188553ef57cac1b7b">u8g_DrawStr</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, <span class="keyword">const</span> <span class="keywordtype">char</span> *s)
<a name="l03401"></a>03401 {
<a name="l03402"></a>03402   u8g_uint_t t = 0;
<a name="l03403"></a>03403   int8_t d;
<a name="l03404"></a>03404 
<a name="l03405"></a>03405   <span class="comment">//u8g_uint_t u8g_GetStrWidth(u8g, s);</span>
<a name="l03406"></a>03406   <span class="comment">//u8g_font_GetFontAscent(u8g-&gt;font)-u8g_font_GetFontDescent(u8g-&gt;font);</span>
<a name="l03407"></a>03407 
<a name="l03408"></a>03408   y += u8g-&gt;<a class="code" href="struct__u8g__t.html#a6be898df5b515d31b02d56adab72cfef">font_calc_vref</a>(u8g);
<a name="l03409"></a>03409 
<a name="l03410"></a>03410   <span class="keywordflow">while</span>( *s != <span class="charliteral">&#39;\0&#39;</span> )
<a name="l03411"></a>03411   {
<a name="l03412"></a>03412     d = <a class="code" href="u8glib__ex_8h.html#a2c7e5283135e5644c297b902c1745434">u8g_draw_glyph</a>(u8g, x, y, *s);
<a name="l03413"></a>03413     x += d;
<a name="l03414"></a>03414     t += d;
<a name="l03415"></a>03415     s++;
<a name="l03416"></a>03416   }
<a name="l03417"></a>03417   <span class="keywordflow">return</span> t;
<a name="l03418"></a>03418 }
<a name="l03419"></a>03419 
<a name="l03420"></a><a class="code" href="u8glib__ex_8h.html#a319d54a58496256d83e6baf7743ca2e6">03420</a> u8g_uint_t <a class="code" href="u8glib__ex_8h.html#a319d54a58496256d83e6baf7743ca2e6">u8g_DrawStr90</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, <span class="keyword">const</span> <span class="keywordtype">char</span> *s)
<a name="l03421"></a>03421 {
<a name="l03422"></a>03422   u8g_uint_t t = 0;
<a name="l03423"></a>03423   int8_t d;
<a name="l03424"></a>03424 
<a name="l03425"></a>03425   x -= u8g-&gt;<a class="code" href="struct__u8g__t.html#a6be898df5b515d31b02d56adab72cfef">font_calc_vref</a>(u8g);
<a name="l03426"></a>03426 
<a name="l03427"></a>03427   <span class="keywordflow">while</span>( *s != <span class="charliteral">&#39;\0&#39;</span> )
<a name="l03428"></a>03428   {
<a name="l03429"></a>03429     d = <a class="code" href="u8glib__ex_8h.html#aa1549e9d5c2a9c2bdfd46008593623da">u8g_draw_glyph90</a>(u8g, x, y, *s);
<a name="l03430"></a>03430     y += d;
<a name="l03431"></a>03431     t += d;
<a name="l03432"></a>03432     s++;
<a name="l03433"></a>03433   }
<a name="l03434"></a>03434   <span class="keywordflow">return</span> t;
<a name="l03435"></a>03435 }
<a name="l03436"></a>03436 
<a name="l03437"></a><a class="code" href="u8glib__ex_8h.html#acd854ce4012af2f25c83b21630065545">03437</a> u8g_uint_t <a class="code" href="u8glib__ex_8h.html#acd854ce4012af2f25c83b21630065545">u8g_DrawStr180</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, <span class="keyword">const</span> <span class="keywordtype">char</span> *s)
<a name="l03438"></a>03438 {
<a name="l03439"></a>03439   u8g_uint_t t = 0;
<a name="l03440"></a>03440   int8_t d;
<a name="l03441"></a>03441 
<a name="l03442"></a>03442   y -= u8g-&gt;<a class="code" href="struct__u8g__t.html#a6be898df5b515d31b02d56adab72cfef">font_calc_vref</a>(u8g);
<a name="l03443"></a>03443 
<a name="l03444"></a>03444   <span class="keywordflow">while</span>( *s != <span class="charliteral">&#39;\0&#39;</span> )
<a name="l03445"></a>03445   {
<a name="l03446"></a>03446     d = <a class="code" href="u8glib__ex_8h.html#a5e9a63c4ab78741dcea4729873ba99d3">u8g_draw_glyph180</a>(u8g, x, y, *s);
<a name="l03447"></a>03447     x -= d;
<a name="l03448"></a>03448     t += d;
<a name="l03449"></a>03449     s++;
<a name="l03450"></a>03450   }
<a name="l03451"></a>03451   <span class="keywordflow">return</span> t;
<a name="l03452"></a>03452 }
<a name="l03453"></a>03453 
<a name="l03454"></a><a class="code" href="u8glib__ex_8h.html#a2457b9ede28153aca423dcd82aac0202">03454</a> u8g_uint_t <a class="code" href="u8glib__ex_8h.html#a2457b9ede28153aca423dcd82aac0202">u8g_DrawStr270</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, <span class="keyword">const</span> <span class="keywordtype">char</span> *s)
<a name="l03455"></a>03455 {
<a name="l03456"></a>03456   u8g_uint_t t = 0;
<a name="l03457"></a>03457   int8_t d;
<a name="l03458"></a>03458 
<a name="l03459"></a>03459   x += u8g-&gt;<a class="code" href="struct__u8g__t.html#a6be898df5b515d31b02d56adab72cfef">font_calc_vref</a>(u8g);
<a name="l03460"></a>03460 
<a name="l03461"></a>03461   <span class="keywordflow">while</span>( *s != <span class="charliteral">&#39;\0&#39;</span> )
<a name="l03462"></a>03462   {
<a name="l03463"></a>03463     d = <a class="code" href="u8glib__ex_8h.html#aeb1319026dbcff6f8cba6f21130bbaff">u8g_draw_glyph270</a>(u8g, x, y, *s);
<a name="l03464"></a>03464     y -= d;
<a name="l03465"></a>03465     t += d;
<a name="l03466"></a>03466     s++;
<a name="l03467"></a>03467   }
<a name="l03468"></a>03468   <span class="keywordflow">return</span> t;
<a name="l03469"></a>03469 }
<a name="l03470"></a>03470 
<a name="l03471"></a><a class="code" href="u8glib__ex_8h.html#a46fed0ab654220c07c53b220ef217457">03471</a> u8g_uint_t <a class="code" href="u8glib__ex_8h.html#a46fed0ab654220c07c53b220ef217457">u8g_DrawStrDir</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, <span class="keyword">const</span> <span class="keywordtype">char</span> *s)
<a name="l03472"></a>03472 {
<a name="l03473"></a>03473   <span class="keywordflow">switch</span>(dir)
<a name="l03474"></a>03474   {
<a name="l03475"></a>03475     <span class="keywordflow">case</span> 0:
<a name="l03476"></a>03476       <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#a6f9b5dddd95dd74188553ef57cac1b7b">u8g_DrawStr</a>(u8g, x, y, s);
<a name="l03477"></a>03477     <span class="keywordflow">case</span> 1:
<a name="l03478"></a>03478       <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#a319d54a58496256d83e6baf7743ca2e6">u8g_DrawStr90</a>(u8g, x, y, s);
<a name="l03479"></a>03479     <span class="keywordflow">case</span> 2:
<a name="l03480"></a>03480       <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#acd854ce4012af2f25c83b21630065545">u8g_DrawStr180</a>(u8g, x, y, s);
<a name="l03481"></a>03481     <span class="keywordflow">case</span> 3:
<a name="l03482"></a>03482       <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#a2457b9ede28153aca423dcd82aac0202">u8g_DrawStr270</a>(u8g, x, y, s);
<a name="l03483"></a>03483   }
<a name="l03484"></a>03484   <span class="keywordflow">return</span> 0;
<a name="l03485"></a>03485 }
<a name="l03486"></a>03486 
<a name="l03487"></a><a class="code" href="u8glib__ex_8h.html#ab9303cb12e0ae960f9e5b552af57a0c8">03487</a> u8g_uint_t <a class="code" href="u8glib__ex_8h.html#ab9303cb12e0ae960f9e5b552af57a0c8">u8g_DrawStrP</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, <span class="keyword">const</span> u8g_pgm_uint8_t *s)
<a name="l03488"></a>03488 {
<a name="l03489"></a>03489   u8g_uint_t t = 0;
<a name="l03490"></a>03490   int8_t d;
<a name="l03491"></a>03491   uint8_t c;
<a name="l03492"></a>03492 
<a name="l03493"></a>03493   y += u8g-&gt;<a class="code" href="struct__u8g__t.html#a6be898df5b515d31b02d56adab72cfef">font_calc_vref</a>(u8g);
<a name="l03494"></a>03494 
<a name="l03495"></a>03495   <span class="keywordflow">for</span>(;;)
<a name="l03496"></a>03496   {
<a name="l03497"></a>03497     c = <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>(s);
<a name="l03498"></a>03498     <span class="keywordflow">if</span> ( c == <span class="charliteral">&#39;\0&#39;</span> )
<a name="l03499"></a>03499       <span class="keywordflow">break</span>;
<a name="l03500"></a>03500     d = <a class="code" href="u8glib__ex_8h.html#a2c7e5283135e5644c297b902c1745434">u8g_draw_glyph</a>(u8g, x, y, c);
<a name="l03501"></a>03501     x += d;
<a name="l03502"></a>03502     t += d;
<a name="l03503"></a>03503     s++;
<a name="l03504"></a>03504   }
<a name="l03505"></a>03505   <span class="keywordflow">return</span> t;
<a name="l03506"></a>03506 }
<a name="l03507"></a>03507 
<a name="l03508"></a><a class="code" href="u8glib__ex_8h.html#ac5b9eb94fb0ae65de7e8d24ac5f70cbf">03508</a> u8g_uint_t <a class="code" href="u8glib__ex_8h.html#ac5b9eb94fb0ae65de7e8d24ac5f70cbf">u8g_DrawStr90P</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, <span class="keyword">const</span> u8g_pgm_uint8_t *s)
<a name="l03509"></a>03509 {
<a name="l03510"></a>03510   u8g_uint_t t = 0;
<a name="l03511"></a>03511   int8_t d;
<a name="l03512"></a>03512 
<a name="l03513"></a>03513   x -= u8g-&gt;<a class="code" href="struct__u8g__t.html#a6be898df5b515d31b02d56adab72cfef">font_calc_vref</a>(u8g);
<a name="l03514"></a>03514 
<a name="l03515"></a>03515   <span class="keywordflow">while</span>( *s != <span class="charliteral">&#39;\0&#39;</span> )
<a name="l03516"></a>03516   {
<a name="l03517"></a>03517     d = <a class="code" href="u8glib__ex_8h.html#a48fdfe462530999ea1a6cfc83474b59e">u8g_DrawGlyph90</a>(u8g, x, y, <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>(s));
<a name="l03518"></a>03518     y += d;
<a name="l03519"></a>03519     t += d;
<a name="l03520"></a>03520     s++;
<a name="l03521"></a>03521   }
<a name="l03522"></a>03522   <span class="keywordflow">return</span> t;
<a name="l03523"></a>03523 }
<a name="l03524"></a>03524 
<a name="l03525"></a><a class="code" href="u8glib__ex_8h.html#aebc8c1a5fbbf49f4829a6ba21f0686d2">03525</a> u8g_uint_t <a class="code" href="u8glib__ex_8h.html#aebc8c1a5fbbf49f4829a6ba21f0686d2">u8g_DrawStr180P</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, <span class="keyword">const</span> u8g_pgm_uint8_t *s)
<a name="l03526"></a>03526 {
<a name="l03527"></a>03527   u8g_uint_t t = 0;
<a name="l03528"></a>03528   int8_t d;
<a name="l03529"></a>03529 
<a name="l03530"></a>03530   y -= u8g-&gt;<a class="code" href="struct__u8g__t.html#a6be898df5b515d31b02d56adab72cfef">font_calc_vref</a>(u8g);
<a name="l03531"></a>03531 
<a name="l03532"></a>03532   <span class="keywordflow">while</span>( *s != <span class="charliteral">&#39;\0&#39;</span> )
<a name="l03533"></a>03533   {
<a name="l03534"></a>03534     d = <a class="code" href="u8glib__ex_8h.html#a61ca7ba0f77bf99f7cc3652b43b87eae">u8g_DrawGlyph180</a>(u8g, x, y, <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>(s));
<a name="l03535"></a>03535     x -= d;
<a name="l03536"></a>03536     t += d;
<a name="l03537"></a>03537     s++;
<a name="l03538"></a>03538   }
<a name="l03539"></a>03539   <span class="keywordflow">return</span> t;
<a name="l03540"></a>03540 }
<a name="l03541"></a>03541 
<a name="l03542"></a><a class="code" href="u8glib__ex_8h.html#ae4320777a89f8f42189e6f62bd471954">03542</a> u8g_uint_t <a class="code" href="u8glib__ex_8h.html#ae4320777a89f8f42189e6f62bd471954">u8g_DrawStr270P</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, <span class="keyword">const</span> u8g_pgm_uint8_t *s)
<a name="l03543"></a>03543 {
<a name="l03544"></a>03544   u8g_uint_t t = 0;
<a name="l03545"></a>03545   int8_t d;
<a name="l03546"></a>03546 
<a name="l03547"></a>03547   x += u8g-&gt;<a class="code" href="struct__u8g__t.html#a6be898df5b515d31b02d56adab72cfef">font_calc_vref</a>(u8g);
<a name="l03548"></a>03548 
<a name="l03549"></a>03549   <span class="keywordflow">while</span>( *s != <span class="charliteral">&#39;\0&#39;</span> )
<a name="l03550"></a>03550   {
<a name="l03551"></a>03551     d = <a class="code" href="u8glib__ex_8h.html#a129d05b6808920af0ec5b2cb82e5ea2e">u8g_DrawGlyph270</a>(u8g, x, y, <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>(s));
<a name="l03552"></a>03552     y -= d;
<a name="l03553"></a>03553     t += d;
<a name="l03554"></a>03554     s++;
<a name="l03555"></a>03555   }
<a name="l03556"></a>03556   <span class="keywordflow">return</span> t;
<a name="l03557"></a>03557 }
<a name="l03558"></a>03558 
<a name="l03559"></a><a class="code" href="u8glib__ex_8h.html#a5b76235fc71768102bda78aa2409c3b8">03559</a> u8g_uint_t <a class="code" href="u8glib__ex_8h.html#a5b76235fc71768102bda78aa2409c3b8">u8g_DrawStrFontBBX</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, <span class="keyword">const</span> <span class="keywordtype">char</span> *s)
<a name="l03560"></a>03560 {
<a name="l03561"></a>03561   x -= <a class="code" href="u8glib__ex_8h.html#ae8d670dfb6bb613b598305378516398c">u8g_GetFontBBXOffX</a>(u8g);
<a name="l03562"></a>03562   y += <a class="code" href="u8glib__ex_8h.html#a311d9f0381fe5a057e7b6b80383e7a85">u8g_GetFontBBXOffY</a>(u8g);
<a name="l03563"></a>03563   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#a46fed0ab654220c07c53b220ef217457">u8g_DrawStrDir</a>(u8g, x, y, dir, s);
<a name="l03564"></a>03564 }
<a name="l03565"></a>03565 
<a name="l03566"></a>03566 <span class="comment">/* still used by picgen.c, dir argument is ignored */</span>
<a name="l03567"></a><a class="code" href="u8glib__ex_8h.html#af65915dbfa8d4d18d12cd2d903cb33bb">03567</a> int8_t <a class="code" href="u8glib__ex_8h.html#af65915dbfa8d4d18d12cd2d903cb33bb">u8g_DrawGlyphFontBBX</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t encoding)
<a name="l03568"></a>03568 {
<a name="l03569"></a>03569   x -= <a class="code" href="u8glib__ex_8h.html#ae8d670dfb6bb613b598305378516398c">u8g_GetFontBBXOffX</a>(u8g);
<a name="l03570"></a>03570   y += <a class="code" href="u8glib__ex_8h.html#a311d9f0381fe5a057e7b6b80383e7a85">u8g_GetFontBBXOffY</a>(u8g);
<a name="l03571"></a>03571   <a class="code" href="u8glib__ex_8h.html#a2c7e5283135e5644c297b902c1745434">u8g_draw_glyph</a>(u8g, x, y, encoding);
<a name="l03572"></a>03572   <span class="keywordflow">return</span> 0;
<a name="l03573"></a>03573 }
<a name="l03574"></a>03574 
<a name="l03575"></a>03575 
<a name="l03576"></a>03576 <span class="comment">/*========================================================================*/</span>
<a name="l03577"></a>03577 <span class="comment">/* set ascent/descent for reference point calculation */</span>
<a name="l03578"></a>03578 
<a name="l03579"></a><a class="code" href="u8glib__ex_8h.html#aa1bca928957c08c9598ff134ea7b92b1">03579</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#aa1bca928957c08c9598ff134ea7b92b1">u8g_UpdateRefHeight</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g)
<a name="l03580"></a>03580 {
<a name="l03581"></a>03581   uint16_t ls;
<a name="l03582"></a>03582   <span class="keywordflow">if</span> ( u8g-&gt;<a class="code" href="struct__u8g__t.html#a098e0a80024577b9bb8644bd1fcc2aeb">font</a> == NULL )
<a name="l03583"></a>03583     <span class="keywordflow">return</span>;
<a name="l03584"></a>03584   <span class="keywordflow">if</span> ( u8g-&gt;<a class="code" href="struct__u8g__t.html#a0902d0294e5df68673e5e8730295498c">font_height_mode</a> == <a class="code" href="u8glib__ex_8h.html#a36fc06ce0f1172c052c16c3b03c3d997">U8G_FONT_HEIGHT_MODE_TEXT</a> )
<a name="l03585"></a>03585   {
<a name="l03586"></a>03586     u8g-&gt;<a class="code" href="struct__u8g__t.html#aa9cedcf19ccaafed19410935c5558631">font_ref_ascent</a> = <a class="code" href="u8glib__ex_8h.html#adef4a3f7491cf25c21212d15052e0ba4">u8g_font_GetCapitalAHeight</a>(u8g-&gt;<a class="code" href="struct__u8g__t.html#a098e0a80024577b9bb8644bd1fcc2aeb">font</a>);
<a name="l03587"></a>03587     u8g-&gt;<a class="code" href="struct__u8g__t.html#a207e0565daf3a164bdb7391c9a78d5df">font_ref_descent</a> = <a class="code" href="u8glib__ex_8h.html#a500526b4e195c609286e817da1f31c9b">u8g_font_GetLowerGDescent</a>(u8g-&gt;<a class="code" href="struct__u8g__t.html#a098e0a80024577b9bb8644bd1fcc2aeb">font</a>);
<a name="l03588"></a>03588   }
<a name="l03589"></a>03589   <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( u8g-&gt;<a class="code" href="struct__u8g__t.html#a0902d0294e5df68673e5e8730295498c">font_height_mode</a> == <a class="code" href="u8glib__ex_8h.html#ac522a3ea75701a6ce493406ceb00340a">U8G_FONT_HEIGHT_MODE_XTEXT</a> )
<a name="l03590"></a>03590   {
<a name="l03591"></a>03591     u8g-&gt;<a class="code" href="struct__u8g__t.html#aa9cedcf19ccaafed19410935c5558631">font_ref_ascent</a> = <a class="code" href="u8glib__ex_8h.html#a6cb34c8d8c0a24f1be4215ccaa5b5da4">u8g_font_GetFontXAscent</a>(u8g-&gt;<a class="code" href="struct__u8g__t.html#a098e0a80024577b9bb8644bd1fcc2aeb">font</a>);
<a name="l03592"></a>03592     u8g-&gt;<a class="code" href="struct__u8g__t.html#a207e0565daf3a164bdb7391c9a78d5df">font_ref_descent</a> = <a class="code" href="u8glib__ex_8h.html#a7527a525f56d467564ce36b428c59a11">u8g_font_GetFontXDescent</a>(u8g-&gt;<a class="code" href="struct__u8g__t.html#a098e0a80024577b9bb8644bd1fcc2aeb">font</a>);
<a name="l03593"></a>03593   }
<a name="l03594"></a>03594   <span class="keywordflow">else</span>
<a name="l03595"></a>03595   {
<a name="l03596"></a>03596     u8g-&gt;<a class="code" href="struct__u8g__t.html#aa9cedcf19ccaafed19410935c5558631">font_ref_ascent</a> = <a class="code" href="u8glib__ex_8h.html#aa3b2ba6a5bb6c9ac2921bd4fa8fe414b">u8g_font_GetFontAscent</a>(u8g-&gt;<a class="code" href="struct__u8g__t.html#a098e0a80024577b9bb8644bd1fcc2aeb">font</a>);
<a name="l03597"></a>03597     u8g-&gt;<a class="code" href="struct__u8g__t.html#a207e0565daf3a164bdb7391c9a78d5df">font_ref_descent</a> = <a class="code" href="u8glib__ex_8h.html#a195e16921554f54a5b8a5d650e14c004">u8g_font_GetFontDescent</a>(u8g-&gt;<a class="code" href="struct__u8g__t.html#a098e0a80024577b9bb8644bd1fcc2aeb">font</a>);
<a name="l03598"></a>03598   }
<a name="l03599"></a>03599 
<a name="l03600"></a>03600   ls = u8g-&gt;<a class="code" href="struct__u8g__t.html#aa9cedcf19ccaafed19410935c5558631">font_ref_ascent</a> - u8g-&gt;<a class="code" href="struct__u8g__t.html#a207e0565daf3a164bdb7391c9a78d5df">font_ref_descent</a>;
<a name="l03601"></a>03601   <span class="keywordflow">if</span> ( u8g-&gt;<a class="code" href="struct__u8g__t.html#af5ae7d612e35acaf1fda5e51defcf273">font_line_spacing_factor</a> != 64 )
<a name="l03602"></a>03602   {
<a name="l03603"></a>03603     ls &amp;= 255;
<a name="l03604"></a>03604     ls *= u8g-&gt;<a class="code" href="struct__u8g__t.html#af5ae7d612e35acaf1fda5e51defcf273">font_line_spacing_factor</a>;
<a name="l03605"></a>03605     ls &gt;&gt;= 6;
<a name="l03606"></a>03606   }
<a name="l03607"></a>03607   u8g-&gt;<a class="code" href="struct__u8g__t.html#a8cdcc1f0ede6015f8099c063cdd6bf40">line_spacing</a> = ls;
<a name="l03608"></a>03608 }
<a name="l03609"></a>03609 
<a name="l03610"></a><a class="code" href="u8glib__ex_8h.html#ab9ee42930984106f88f6ea7e1a00ee90">03610</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#ab9ee42930984106f88f6ea7e1a00ee90">u8g_SetFontRefHeightText</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g)
<a name="l03611"></a>03611 {
<a name="l03612"></a>03612   u8g-&gt;<a class="code" href="struct__u8g__t.html#a0902d0294e5df68673e5e8730295498c">font_height_mode</a> = <a class="code" href="u8glib__ex_8h.html#a36fc06ce0f1172c052c16c3b03c3d997">U8G_FONT_HEIGHT_MODE_TEXT</a>;
<a name="l03613"></a>03613   <a class="code" href="u8glib__ex_8h.html#aa1bca928957c08c9598ff134ea7b92b1">u8g_UpdateRefHeight</a>(u8g);
<a name="l03614"></a>03614 }
<a name="l03615"></a>03615 
<a name="l03616"></a><a class="code" href="u8glib__ex_8h.html#af86f83a99306b52f7fd8c580889f8567">03616</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#af86f83a99306b52f7fd8c580889f8567">u8g_SetFontRefHeightExtendedText</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g)
<a name="l03617"></a>03617 {
<a name="l03618"></a>03618   u8g-&gt;<a class="code" href="struct__u8g__t.html#a0902d0294e5df68673e5e8730295498c">font_height_mode</a> = <a class="code" href="u8glib__ex_8h.html#ac522a3ea75701a6ce493406ceb00340a">U8G_FONT_HEIGHT_MODE_XTEXT</a>;
<a name="l03619"></a>03619   <a class="code" href="u8glib__ex_8h.html#aa1bca928957c08c9598ff134ea7b92b1">u8g_UpdateRefHeight</a>(u8g);
<a name="l03620"></a>03620 }
<a name="l03621"></a>03621 
<a name="l03622"></a>03622 
<a name="l03623"></a><a class="code" href="u8glib__ex_8h.html#a092683cf0cb511fbddab979910a79690">03623</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a092683cf0cb511fbddab979910a79690">u8g_SetFontRefHeightAll</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g)
<a name="l03624"></a>03624 {
<a name="l03625"></a>03625   u8g-&gt;<a class="code" href="struct__u8g__t.html#a0902d0294e5df68673e5e8730295498c">font_height_mode</a> = <a class="code" href="u8glib__ex_8h.html#af417342da60f853ca5e336d9ff618f38">U8G_FONT_HEIGHT_MODE_ALL</a>;
<a name="l03626"></a>03626   <a class="code" href="u8glib__ex_8h.html#aa1bca928957c08c9598ff134ea7b92b1">u8g_UpdateRefHeight</a>(u8g);
<a name="l03627"></a>03627 }
<a name="l03628"></a>03628 
<a name="l03629"></a>03629 <span class="comment">/* factor = 64: linespaceing == ascent and descent */</span>
<a name="l03630"></a><a class="code" href="u8glib__ex_8h.html#a58545bcbc9965a4f73c39e5cb1cd1c3c">03630</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a58545bcbc9965a4f73c39e5cb1cd1c3c">u8g_SetFontLineSpacingFactor</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t  factor)
<a name="l03631"></a>03631 {
<a name="l03632"></a>03632   u8g-&gt;<a class="code" href="struct__u8g__t.html#af5ae7d612e35acaf1fda5e51defcf273">font_line_spacing_factor</a> = factor;
<a name="l03633"></a>03633   <a class="code" href="u8glib__ex_8h.html#aa1bca928957c08c9598ff134ea7b92b1">u8g_UpdateRefHeight</a>(u8g);
<a name="l03634"></a>03634 }
<a name="l03635"></a>03635 
<a name="l03636"></a>03636 
<a name="l03637"></a>03637 
<a name="l03638"></a>03638 <span class="comment">/*========================================================================*/</span>
<a name="l03639"></a>03639 <span class="comment">/* callback procedures to correct the y position */</span>
<a name="l03640"></a>03640 
<a name="l03641"></a><a class="code" href="u8glib__ex_8h.html#a14aded9e34f656aec5f4124deab1ad33">03641</a> u8g_uint_t <a class="code" href="u8glib__ex_8h.html#a14aded9e34f656aec5f4124deab1ad33">u8g_font_calc_vref_font</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g)
<a name="l03642"></a>03642 {
<a name="l03643"></a>03643   <span class="keywordflow">return</span> 0;
<a name="l03644"></a>03644 }
<a name="l03645"></a>03645 
<a name="l03646"></a><a class="code" href="u8glib__ex_8h.html#a9c3ea72b6af49eae8f5dd98c4a581ceb">03646</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a9c3ea72b6af49eae8f5dd98c4a581ceb">u8g_SetFontPosBaseline</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g)
<a name="l03647"></a>03647 {
<a name="l03648"></a>03648   u8g-&gt;<a class="code" href="struct__u8g__t.html#a6be898df5b515d31b02d56adab72cfef">font_calc_vref</a> = <a class="code" href="u8glib__ex_8h.html#a14aded9e34f656aec5f4124deab1ad33">u8g_font_calc_vref_font</a>;
<a name="l03649"></a>03649 }
<a name="l03650"></a>03650 
<a name="l03651"></a>03651 
<a name="l03652"></a><a class="code" href="u8glib__ex_8h.html#af85dfb57d3409abb207fc2e013223e5e">03652</a> u8g_uint_t <a class="code" href="u8glib__ex_8h.html#af85dfb57d3409abb207fc2e013223e5e">u8g_font_calc_vref_bottom</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g)
<a name="l03653"></a>03653 {
<a name="l03654"></a>03654   <span class="comment">/* y += (u8g_uint_t)(u8g_int_t)(u8g-&gt;font_ref_descent); */</span>
<a name="l03655"></a>03655   <span class="keywordflow">return</span> (u8g_uint_t)(<a class="code" href="u8glib__ex_8h.html#a99932950801c8803a2b0f00d0f5234c6">u8g_int_t</a>)(u8g-&gt;<a class="code" href="struct__u8g__t.html#a207e0565daf3a164bdb7391c9a78d5df">font_ref_descent</a>);
<a name="l03656"></a>03656 }
<a name="l03657"></a>03657 
<a name="l03658"></a><a class="code" href="u8glib__ex_8h.html#a3f8c9712e4d7697d4388920719e8cbca">03658</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a3f8c9712e4d7697d4388920719e8cbca">u8g_SetFontPosBottom</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g)
<a name="l03659"></a>03659 {
<a name="l03660"></a>03660   u8g-&gt;<a class="code" href="struct__u8g__t.html#a6be898df5b515d31b02d56adab72cfef">font_calc_vref</a> = <a class="code" href="u8glib__ex_8h.html#af85dfb57d3409abb207fc2e013223e5e">u8g_font_calc_vref_bottom</a>;
<a name="l03661"></a>03661 }
<a name="l03662"></a>03662 
<a name="l03663"></a><a class="code" href="u8glib__ex_8h.html#a03fc713c8662f272b6d25a7d9951ed82">03663</a> u8g_uint_t <a class="code" href="u8glib__ex_8h.html#a03fc713c8662f272b6d25a7d9951ed82">u8g_font_calc_vref_top</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g)
<a name="l03664"></a>03664 {
<a name="l03665"></a>03665   u8g_uint_t tmp;
<a name="l03666"></a>03666   <span class="comment">/* reference pos is one pixel above the upper edge of the reference glyph */</span>
<a name="l03667"></a>03667 
<a name="l03668"></a>03668   <span class="comment">/*</span>
<a name="l03669"></a>03669 <span class="comment">  y += (u8g_uint_t)(u8g_int_t)(u8g-&gt;font_ref_ascent);</span>
<a name="l03670"></a>03670 <span class="comment">  y++;</span>
<a name="l03671"></a>03671 <span class="comment">  */</span>
<a name="l03672"></a>03672   tmp = (<a class="code" href="u8glib__ex_8h.html#ab19091723595feb35a099cbd56b7cbb6">u8g_uint_t</a>)(u8g_int_t)(u8g-&gt;<a class="code" href="struct__u8g__t.html#aa9cedcf19ccaafed19410935c5558631">font_ref_ascent</a>);
<a name="l03673"></a>03673   tmp++;
<a name="l03674"></a>03674   <span class="keywordflow">return</span> tmp;
<a name="l03675"></a>03675 }
<a name="l03676"></a>03676 
<a name="l03677"></a><a class="code" href="u8glib__ex_8h.html#a18771df48680ba78e4e85e160f37fdcd">03677</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a18771df48680ba78e4e85e160f37fdcd">u8g_SetFontPosTop</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g)
<a name="l03678"></a>03678 {
<a name="l03679"></a>03679   u8g-&gt;<a class="code" href="struct__u8g__t.html#a6be898df5b515d31b02d56adab72cfef">font_calc_vref</a> = <a class="code" href="u8glib__ex_8h.html#a03fc713c8662f272b6d25a7d9951ed82">u8g_font_calc_vref_top</a>;
<a name="l03680"></a>03680 }
<a name="l03681"></a>03681 
<a name="l03682"></a><a class="code" href="u8glib__ex_8h.html#a29011ec90e29fb9bb85cdc1b3707c9a9">03682</a> u8g_uint_t <a class="code" href="u8glib__ex_8h.html#a29011ec90e29fb9bb85cdc1b3707c9a9">u8g_font_calc_vref_center</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g)
<a name="l03683"></a>03683 {
<a name="l03684"></a>03684   int8_t tmp;
<a name="l03685"></a>03685   tmp = u8g-&gt;<a class="code" href="struct__u8g__t.html#aa9cedcf19ccaafed19410935c5558631">font_ref_ascent</a>;
<a name="l03686"></a>03686   tmp -= u8g-&gt;<a class="code" href="struct__u8g__t.html#a207e0565daf3a164bdb7391c9a78d5df">font_ref_descent</a>;
<a name="l03687"></a>03687   tmp /= 2;
<a name="l03688"></a>03688   tmp += u8g-&gt;<a class="code" href="struct__u8g__t.html#a207e0565daf3a164bdb7391c9a78d5df">font_ref_descent</a>;
<a name="l03689"></a>03689   <span class="comment">/* y += (u8g_uint_t)(u8g_int_t)(tmp); */</span>
<a name="l03690"></a>03690   <span class="keywordflow">return</span> tmp;
<a name="l03691"></a>03691 }
<a name="l03692"></a>03692 
<a name="l03693"></a><a class="code" href="u8glib__ex_8h.html#aa000c1c9bdc6d372af6cb55358352dfa">03693</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#aa000c1c9bdc6d372af6cb55358352dfa">u8g_SetFontPosCenter</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g)
<a name="l03694"></a>03694 {
<a name="l03695"></a>03695   u8g-&gt;<a class="code" href="struct__u8g__t.html#a6be898df5b515d31b02d56adab72cfef">font_calc_vref</a> = <a class="code" href="u8glib__ex_8h.html#a29011ec90e29fb9bb85cdc1b3707c9a9">u8g_font_calc_vref_center</a>;
<a name="l03696"></a>03696 }
<a name="l03697"></a>03697 
<a name="l03698"></a>03698 <span class="comment">/*========================================================================*/</span>
<a name="l03699"></a>03699 <span class="comment">/* string pixel width calculation */</span>
<a name="l03700"></a>03700 
<a name="l03701"></a><a class="code" href="u8glib__ex_8h.html#a9b10b20a3504d3454cceefe2e029ff9e">03701</a> <span class="keywordtype">char</span> <a class="code" href="u8glib__ex_8h.html#a9b10b20a3504d3454cceefe2e029ff9e">u8g_font_get_char</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *s)
<a name="l03702"></a>03702 {
<a name="l03703"></a>03703   <span class="keywordflow">return</span> *(<span class="keyword">const</span> <span class="keywordtype">char</span> *)(s);
<a name="l03704"></a>03704 }
<a name="l03705"></a>03705 
<a name="l03706"></a><a class="code" href="u8glib__ex_8h.html#adbf1d7b310a4f4dfd03cbc561b96ea93">03706</a> <span class="keywordtype">char</span> <a class="code" href="u8glib__ex_8h.html#adbf1d7b310a4f4dfd03cbc561b96ea93">u8g_font_get_charP</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *s)
<a name="l03707"></a>03707 {
<a name="l03708"></a>03708   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>(s);
<a name="l03709"></a>03709 }
<a name="l03710"></a>03710 
<a name="l03711"></a><a class="code" href="u8glib__ex_8h.html#aa8a47050ff63bab3aa7df1147c3b21e3">03711</a> <span class="keyword">typedef</span> char (*<a class="code" href="u8glib__ex_8h.html#aa8a47050ff63bab3aa7df1147c3b21e3">u8g_font_get_char_fn</a>)(<span class="keyword">const</span> <span class="keywordtype">void</span> *s);
<a name="l03712"></a>03712 
<a name="l03713"></a>03713 
<a name="l03714"></a><a class="code" href="u8glib__ex_8h.html#a68a7666d367dcef4ea4182037f608b9d">03714</a> u8g_uint_t <a class="code" href="u8glib__ex_8h.html#a68a7666d367dcef4ea4182037f608b9d">u8g_font_calc_str_pixel_width</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <span class="keyword">const</span> <span class="keywordtype">char</span> *s, <a class="code" href="u8glib__ex_8h.html#aa8a47050ff63bab3aa7df1147c3b21e3">u8g_font_get_char_fn</a> get_char )
<a name="l03715"></a>03715 {
<a name="l03716"></a>03716   u8g_uint_t  w;
<a name="l03717"></a>03717   uint8_t enc;
<a name="l03718"></a>03718 
<a name="l03719"></a>03719   <span class="comment">/* reset the total minimal width to zero, this will be expanded during calculation */</span>
<a name="l03720"></a>03720   w = 0;
<a name="l03721"></a>03721 
<a name="l03722"></a>03722   enc = get_char(s);
<a name="l03723"></a>03723 
<a name="l03724"></a>03724   <span class="comment">/* check for empty string, width is already 0 */</span>
<a name="l03725"></a>03725   <span class="keywordflow">if</span> ( enc == <span class="charliteral">&#39;\0&#39;</span> )
<a name="l03726"></a>03726   {
<a name="l03727"></a>03727     <span class="keywordflow">return</span> w;
<a name="l03728"></a>03728   }
<a name="l03729"></a>03729 
<a name="l03730"></a>03730   <span class="comment">/* get the glyph information of the first char. This must be valid, because we already checked for the empty string */</span>
<a name="l03731"></a>03731   <span class="comment">/* if *s is not inside the font, then the cached parameters of the glyph are all zero */</span>
<a name="l03732"></a>03732   <a class="code" href="u8glib__ex_8h.html#a560080c4acbd664f54b8a35922b40523">u8g_GetGlyph</a>(u8g, enc);
<a name="l03733"></a>03733 
<a name="l03734"></a>03734   <span class="comment">/* strlen(s) == 1:       width = width(s[0]) */</span>
<a name="l03735"></a>03735   <span class="comment">/* strlen(s) == 2:       width = - offx(s[0]) + deltax(s[0]) + offx(s[1]) + width(s[1]) */</span>
<a name="l03736"></a>03736   <span class="comment">/* strlen(s) == 3:       width = - offx(s[0]) + deltax(s[0]) + deltax(s[1]) + offx(s[2]) + width(s[2]) */</span>
<a name="l03737"></a>03737 
<a name="l03738"></a>03738   <span class="comment">/* assume that the string has size 2 or more, than start with negative offset-x */</span>
<a name="l03739"></a>03739   <span class="comment">/* for string with size 1, this will be nullified after the loop */</span>
<a name="l03740"></a>03740   w = -u8g-&gt;<a class="code" href="struct__u8g__t.html#a3bb3244ddc11d85c868e430e257a0ed8">glyph_x</a>;
<a name="l03741"></a>03741   <span class="keywordflow">for</span>(;;)
<a name="l03742"></a>03742   {
<a name="l03743"></a>03743 
<a name="l03744"></a>03744     <span class="comment">/* check and stop if the end of the string is reached */</span>
<a name="l03745"></a>03745     s++;
<a name="l03746"></a>03746     <span class="keywordflow">if</span> ( get_char(s) == <span class="charliteral">&#39;\0&#39;</span> )
<a name="l03747"></a>03747       <span class="keywordflow">break</span>;
<a name="l03748"></a>03748 
<a name="l03749"></a>03749     <span class="comment">/* if there are still more characters, add the delta to the next glyph */</span>
<a name="l03750"></a>03750     w += u8g-&gt;<a class="code" href="struct__u8g__t.html#a0047ff5ea98551bea150fb5c60f6a5ef">glyph_dx</a>;
<a name="l03751"></a>03751 
<a name="l03752"></a>03752     <span class="comment">/* store the encoding in a local variable, used also after the for(;;) loop */</span>
<a name="l03753"></a>03753     enc = get_char(s);
<a name="l03754"></a>03754 
<a name="l03755"></a>03755     <span class="comment">/* load the next glyph information */</span>
<a name="l03756"></a>03756     <a class="code" href="u8glib__ex_8h.html#a560080c4acbd664f54b8a35922b40523">u8g_GetGlyph</a>(u8g, enc);
<a name="l03757"></a>03757   }
<a name="l03758"></a>03758 
<a name="l03759"></a>03759   <span class="comment">/* finally calculate the width of the last char */</span>
<a name="l03760"></a>03760   <span class="comment">/* here is another exception, if the last char is a black, use the dx value instead */</span>
<a name="l03761"></a>03761   <span class="keywordflow">if</span> ( enc != <span class="charliteral">&#39; &#39;</span> )
<a name="l03762"></a>03762   {
<a name="l03763"></a>03763     <span class="comment">/* if g was not updated in the for loop (strlen() == 1), then the initial offset x gets removed */</span>
<a name="l03764"></a>03764     w += u8g-&gt;<a class="code" href="struct__u8g__t.html#a46729652917f79624a7d0509f5236a08">glyph_width</a>;
<a name="l03765"></a>03765     w += u8g-&gt;<a class="code" href="struct__u8g__t.html#a3bb3244ddc11d85c868e430e257a0ed8">glyph_x</a>;
<a name="l03766"></a>03766   }
<a name="l03767"></a>03767   <span class="keywordflow">else</span>
<a name="l03768"></a>03768   {
<a name="l03769"></a>03769     w += u8g-&gt;<a class="code" href="struct__u8g__t.html#a0047ff5ea98551bea150fb5c60f6a5ef">glyph_dx</a>;
<a name="l03770"></a>03770   }
<a name="l03771"></a>03771 
<a name="l03772"></a>03772 
<a name="l03773"></a>03773   <span class="keywordflow">return</span> w;
<a name="l03774"></a>03774 }
<a name="l03775"></a>03775 
<a name="l03776"></a><a class="code" href="u8glib__ex_8h.html#a54db891c9ab7a64c7a0a6e74aa310fca">03776</a> u8g_uint_t <a class="code" href="u8glib__ex_8h.html#a54db891c9ab7a64c7a0a6e74aa310fca">u8g_GetStrPixelWidth</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <span class="keyword">const</span> <span class="keywordtype">char</span> *s)
<a name="l03777"></a>03777 {
<a name="l03778"></a>03778   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#a68a7666d367dcef4ea4182037f608b9d">u8g_font_calc_str_pixel_width</a>(u8g, s, <a class="code" href="u8glib__ex_8h.html#a9b10b20a3504d3454cceefe2e029ff9e">u8g_font_get_char</a>);
<a name="l03779"></a>03779 }
<a name="l03780"></a>03780 
<a name="l03781"></a><a class="code" href="u8glib__ex_8h.html#a7907e1fbf604f92fd5151259863b0e3e">03781</a> u8g_uint_t <a class="code" href="u8glib__ex_8h.html#a7907e1fbf604f92fd5151259863b0e3e">u8g_GetStrPixelWidthP</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <span class="keyword">const</span> u8g_pgm_uint8_t *s)
<a name="l03782"></a>03782 {
<a name="l03783"></a>03783   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#a68a7666d367dcef4ea4182037f608b9d">u8g_font_calc_str_pixel_width</a>(u8g, (<span class="keyword">const</span> <span class="keywordtype">char</span> *)s, <a class="code" href="u8glib__ex_8h.html#adbf1d7b310a4f4dfd03cbc561b96ea93">u8g_font_get_charP</a>);
<a name="l03784"></a>03784 }
<a name="l03785"></a>03785 
<a name="l03786"></a><a class="code" href="u8glib__ex_8h.html#a1fbc1a5d9e69898e73709c4cd5ee9c92">03786</a> int8_t <a class="code" href="u8glib__ex_8h.html#a1fbc1a5d9e69898e73709c4cd5ee9c92">u8g_GetStrX</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <span class="keyword">const</span> <span class="keywordtype">char</span> *s)
<a name="l03787"></a>03787 {
<a name="l03788"></a>03788   <a class="code" href="u8glib__ex_8h.html#a560080c4acbd664f54b8a35922b40523">u8g_GetGlyph</a>(u8g, *s);
<a name="l03789"></a>03789   <span class="keywordflow">return</span> u8g-&gt;<a class="code" href="struct__u8g__t.html#a3bb3244ddc11d85c868e430e257a0ed8">glyph_x</a>;
<a name="l03790"></a>03790 }
<a name="l03791"></a>03791 
<a name="l03792"></a><a class="code" href="u8glib__ex_8h.html#adf6e76cf4a7cf84800a94932a964e831">03792</a> int8_t <a class="code" href="u8glib__ex_8h.html#adf6e76cf4a7cf84800a94932a964e831">u8g_GetStrXP</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <span class="keyword">const</span> u8g_pgm_uint8_t *s)
<a name="l03793"></a>03793 {
<a name="l03794"></a>03794   <a class="code" href="u8glib__ex_8h.html#a560080c4acbd664f54b8a35922b40523">u8g_GetGlyph</a>(u8g, <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>(s));
<a name="l03795"></a>03795   <span class="keywordflow">return</span> u8g-&gt;<a class="code" href="struct__u8g__t.html#a3bb3244ddc11d85c868e430e257a0ed8">glyph_x</a>;
<a name="l03796"></a>03796 }
<a name="l03797"></a>03797 
<a name="l03798"></a>03798 <span class="comment">/*========================================================================*/</span>
<a name="l03799"></a>03799 <span class="comment">/* string width calculation */</span>
<a name="l03800"></a>03800 
<a name="l03801"></a><a class="code" href="u8glib__ex_8h.html#ae0047a80f65fb75a24b8ffdb10d5f4b9">03801</a> u8g_uint_t <a class="code" href="u8glib__ex_8h.html#ae0047a80f65fb75a24b8ffdb10d5f4b9">u8g_GetStrWidth</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <span class="keyword">const</span> <span class="keywordtype">char</span> *s)
<a name="l03802"></a>03802 {
<a name="l03803"></a>03803   u8g_uint_t  w;
<a name="l03804"></a>03804   uint8_t encoding;
<a name="l03805"></a>03805 
<a name="l03806"></a>03806   <span class="comment">/* reset the total width to zero, this will be expanded during calculation */</span>
<a name="l03807"></a>03807   w = 0;
<a name="l03808"></a>03808 
<a name="l03809"></a>03809   <span class="keywordflow">for</span>(;;)
<a name="l03810"></a>03810   {
<a name="l03811"></a>03811     encoding = *s;
<a name="l03812"></a>03812     <span class="keywordflow">if</span> ( encoding == 0 )
<a name="l03813"></a>03813       <span class="keywordflow">break</span>;
<a name="l03814"></a>03814 
<a name="l03815"></a>03815     <span class="comment">/* load glyph information */</span>
<a name="l03816"></a>03816     <a class="code" href="u8glib__ex_8h.html#a560080c4acbd664f54b8a35922b40523">u8g_GetGlyph</a>(u8g, encoding);
<a name="l03817"></a>03817     w += u8g-&gt;<a class="code" href="struct__u8g__t.html#a0047ff5ea98551bea150fb5c60f6a5ef">glyph_dx</a>;
<a name="l03818"></a>03818 
<a name="l03819"></a>03819     <span class="comment">/* goto next char */</span>
<a name="l03820"></a>03820     s++;
<a name="l03821"></a>03821   }
<a name="l03822"></a>03822 
<a name="l03823"></a>03823   <span class="keywordflow">return</span> w;
<a name="l03824"></a>03824 }
<a name="l03825"></a>03825 
<a name="l03826"></a>03826 
<a name="l03827"></a><a class="code" href="u8glib__ex_8h.html#a670ba3fa896b6be450f38bf74e810c23">03827</a> u8g_uint_t <a class="code" href="u8glib__ex_8h.html#a670ba3fa896b6be450f38bf74e810c23">u8g_GetStrWidthP</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <span class="keyword">const</span> u8g_pgm_uint8_t *s)
<a name="l03828"></a>03828 {
<a name="l03829"></a>03829   u8g_uint_t  w;
<a name="l03830"></a>03830   uint8_t encoding;
<a name="l03831"></a>03831 
<a name="l03832"></a>03832   <span class="comment">/* reset the total width to zero, this will be expanded during calculation */</span>
<a name="l03833"></a>03833   w = 0;
<a name="l03834"></a>03834 
<a name="l03835"></a>03835   <span class="keywordflow">for</span>(;;)
<a name="l03836"></a>03836   {
<a name="l03837"></a>03837     encoding = <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>(s);
<a name="l03838"></a>03838     <span class="keywordflow">if</span> ( encoding == 0 )
<a name="l03839"></a>03839       <span class="keywordflow">break</span>;
<a name="l03840"></a>03840 
<a name="l03841"></a>03841     <span class="comment">/* load glyph information */</span>
<a name="l03842"></a>03842     <a class="code" href="u8glib__ex_8h.html#a560080c4acbd664f54b8a35922b40523">u8g_GetGlyph</a>(u8g, encoding);
<a name="l03843"></a>03843     w += u8g-&gt;<a class="code" href="struct__u8g__t.html#a0047ff5ea98551bea150fb5c60f6a5ef">glyph_dx</a>;
<a name="l03844"></a>03844 
<a name="l03845"></a>03845     <span class="comment">/* goto next char */</span>
<a name="l03846"></a>03846     s++;
<a name="l03847"></a>03847   }
<a name="l03848"></a>03848 
<a name="l03849"></a>03849   <span class="keywordflow">return</span> w;
<a name="l03850"></a>03850 }
<a name="l03851"></a>03851 
<a name="l03852"></a>03852 
<a name="l03853"></a>03853 <span class="comment">/*========================================================================*/</span>
<a name="l03854"></a>03854 <span class="comment">/* calculation of font/glyph/string characteristics */</span>
<a name="l03855"></a>03855 
<a name="l03856"></a>03856 
<a name="l03857"></a>03857 <span class="comment">/*</span>
<a name="l03858"></a>03858 <span class="comment">  Description:</span>
<a name="l03859"></a>03859 <span class="comment">    Calculate parameter for the minimal bounding box on a given string</span>
<a name="l03860"></a>03860 <span class="comment">  Output</span>
<a name="l03861"></a>03861 <span class="comment">    buf-&gt;y_min          extend of the lower left edge if the string below (y_min&lt;0) or above (y_min&gt;0) baseline (descent)</span>
<a name="l03862"></a>03862 <span class="comment">    buf-&gt;y_max          extend of the upper left edge if the string below (y_min&lt;0) or above (y_min&gt;0) baseline (ascent)</span>
<a name="l03863"></a>03863 <span class="comment">    buf-&gt;w                 the width of the string</span>
<a name="l03864"></a>03864 <span class="comment">*/</span>
<a name="l03865"></a><a class="code" href="structu8g__str__size__struct.html">03865</a> <span class="keyword">struct </span><a class="code" href="structu8g__str__size__struct.html">u8g_str_size_struct</a>
<a name="l03866"></a>03866 {
<a name="l03867"></a><a class="code" href="structu8g__str__size__struct.html#aa2a3fd154ae027b28174bb29ce3b0176">03867</a>   int8_t <a class="code" href="structu8g__str__size__struct.html#aa2a3fd154ae027b28174bb29ce3b0176">y_min</a>;         <span class="comment">/* descent */</span>
<a name="l03868"></a><a class="code" href="structu8g__str__size__struct.html#a24f7232070875251e83c34ae73b2f41c">03868</a>   int8_t <a class="code" href="structu8g__str__size__struct.html#a24f7232070875251e83c34ae73b2f41c">y_max</a>;         <span class="comment">/* ascent */</span>
<a name="l03869"></a><a class="code" href="structu8g__str__size__struct.html#aa8648aa0bb6df77525620af6fcb214cf">03869</a>   int8_t <a class="code" href="structu8g__str__size__struct.html#a3ed6e6c91c0b672a428f3f627dfd148b">x</a>, <a class="code" href="structu8g__str__size__struct.html#aa8648aa0bb6df77525620af6fcb214cf">y</a>;             <span class="comment">/* the reference point of the font (negated!) */</span>
<a name="l03870"></a><a class="code" href="structu8g__str__size__struct.html#aea376a9f764f4a9cf33e2c9ae174001a">03870</a>   u8g_uint_t <a class="code" href="structu8g__str__size__struct.html#aea376a9f764f4a9cf33e2c9ae174001a">w</a>;         <span class="comment">/* width of the overall string */</span>
<a name="l03871"></a>03871 };
<a name="l03872"></a><a class="code" href="u8glib__ex_8h.html#a95f6707c1bf0e3234db48929f3f50c29">03872</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structu8g__str__size__struct.html">u8g_str_size_struct</a> <a class="code" href="structu8g__str__size__struct.html">u8g_str_size_t</a>;
<a name="l03873"></a>03873 
<a name="l03874"></a><a class="code" href="u8glib__ex_8h.html#a3aa96676bbb30ccefe58e361caa012ed">03874</a> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a3aa96676bbb30ccefe58e361caa012ed">u8g_font_calc_str_min_box</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <span class="keyword">const</span> <span class="keywordtype">char</span> *s, <a class="code" href="structu8g__str__size__struct.html">u8g_str_size_t</a> *buf)
<a name="l03875"></a>03875 {
<a name="l03876"></a>03876   <span class="comment">/* u8g_glyph_t g; */</span>
<a name="l03877"></a>03877   int8_t tmp;
<a name="l03878"></a>03878 
<a name="l03879"></a>03879   <span class="comment">/* reset the total minimal width to zero, this will be expanded during calculation */</span>
<a name="l03880"></a>03880   buf-&gt;<a class="code" href="structu8g__str__size__struct.html#aea376a9f764f4a9cf33e2c9ae174001a">w</a> = 0;
<a name="l03881"></a>03881 
<a name="l03882"></a>03882   <span class="comment">/* check for empty string, width is already 0, but also reset y_min and y_max to 0 */</span>
<a name="l03883"></a>03883   <span class="keywordflow">if</span> ( *s == <span class="charliteral">&#39;\0&#39;</span> )
<a name="l03884"></a>03884   {
<a name="l03885"></a>03885     buf-&gt;<a class="code" href="structu8g__str__size__struct.html#aa2a3fd154ae027b28174bb29ce3b0176">y_min</a> = 0;
<a name="l03886"></a>03886     buf-&gt;<a class="code" href="structu8g__str__size__struct.html#a24f7232070875251e83c34ae73b2f41c">y_max</a> = 0;
<a name="l03887"></a>03887     buf-&gt;<a class="code" href="structu8g__str__size__struct.html#a3ed6e6c91c0b672a428f3f627dfd148b">x</a> = 0;
<a name="l03888"></a>03888     buf-&gt;<a class="code" href="structu8g__str__size__struct.html#aa8648aa0bb6df77525620af6fcb214cf">y</a> = 0;
<a name="l03889"></a>03889     <span class="keywordflow">return</span>;
<a name="l03890"></a>03890   }
<a name="l03891"></a>03891 
<a name="l03892"></a>03892   <span class="comment">/* reset y_min to the largest possible value. Later we search for the smallest value */</span>
<a name="l03893"></a>03893   <span class="comment">/* y_min contains the position [pixel] of the lower left edge of the glyph above (y_min&gt;0) or below (y_min&lt;0) baseline  */</span>
<a name="l03894"></a>03894   buf-&gt;<a class="code" href="structu8g__str__size__struct.html#aa2a3fd154ae027b28174bb29ce3b0176">y_min</a> = 127;
<a name="l03895"></a>03895   <span class="comment">/* reset y_max to the smallest possible value. Later we search for the highest value */</span>
<a name="l03896"></a>03896   <span class="comment">/* y_max contains the position [pixel] of the upper left edge of the glyph above (y_max&gt;0) or below (y_max&lt;0) baseline  */</span>
<a name="l03897"></a>03897   buf-&gt;<a class="code" href="structu8g__str__size__struct.html#a24f7232070875251e83c34ae73b2f41c">y_max</a> = -128;
<a name="l03898"></a>03898 
<a name="l03899"></a>03899   <span class="comment">/* get the glyph information of the first char. This must be valid, because we already checked for the empty string */</span>
<a name="l03900"></a>03900   <a class="code" href="u8glib__ex_8h.html#a560080c4acbd664f54b8a35922b40523">u8g_GetGlyph</a>(u8g, *s);
<a name="l03901"></a>03901 
<a name="l03902"></a>03902   <span class="comment">/* strlen(s) == 1:       width = width(s[0]) */</span>
<a name="l03903"></a>03903   <span class="comment">/* strlen(s) == 2:       width = - offx(s[0]) + deltax(s[0]) + offx(s[1]) + width(s[1]) */</span>
<a name="l03904"></a>03904   <span class="comment">/* strlen(s) == 3:       width = - offx(s[0]) + deltax(s[0]) + deltax(s[1]) + offx(s[2]) + width(s[2]) */</span>
<a name="l03905"></a>03905 
<a name="l03906"></a>03906   <span class="comment">/* assume that the string has size 2 or more, than start with negative offset-x */</span>
<a name="l03907"></a>03907   <span class="comment">/* for string with size 1, this will be nullified after the loop */</span>
<a name="l03908"></a>03908   <span class="comment">// buf-&gt;w = - u8g_font_GetGlyphBBXOffX(u8g-&gt;font, g);</span>
<a name="l03909"></a>03909   buf-&gt;<a class="code" href="structu8g__str__size__struct.html#aea376a9f764f4a9cf33e2c9ae174001a">w</a> = - u8g-&gt;<a class="code" href="struct__u8g__t.html#a3bb3244ddc11d85c868e430e257a0ed8">glyph_x</a>;
<a name="l03910"></a>03910 
<a name="l03911"></a>03911   <span class="comment">/* Also copy the position of the first glyph. This is the reference point of the string (negated) */</span>
<a name="l03912"></a>03912   buf-&gt;<a class="code" href="structu8g__str__size__struct.html#a3ed6e6c91c0b672a428f3f627dfd148b">x</a> = u8g-&gt;<a class="code" href="struct__u8g__t.html#a3bb3244ddc11d85c868e430e257a0ed8">glyph_x</a>;
<a name="l03913"></a>03913   buf-&gt;<a class="code" href="structu8g__str__size__struct.html#aa8648aa0bb6df77525620af6fcb214cf">y</a> = u8g-&gt;<a class="code" href="struct__u8g__t.html#adedc940cd2a0a208f0ae275953228b53">glyph_y</a>;
<a name="l03914"></a>03914 
<a name="l03915"></a>03915   <span class="keywordflow">for</span>(;;)
<a name="l03916"></a>03916   {
<a name="l03917"></a>03917 
<a name="l03918"></a>03918     <span class="comment">/* calculated y position of the upper left corner (y_max) and lower left corner (y_min) of the string */</span>
<a name="l03919"></a>03919     <span class="comment">/* relative to the base line */</span>
<a name="l03920"></a>03920 
<a name="l03921"></a>03921     tmp = u8g-&gt;<a class="code" href="struct__u8g__t.html#adedc940cd2a0a208f0ae275953228b53">glyph_y</a>;
<a name="l03922"></a>03922     <span class="keywordflow">if</span> ( buf-&gt;<a class="code" href="structu8g__str__size__struct.html#aa2a3fd154ae027b28174bb29ce3b0176">y_min</a> &gt; tmp )
<a name="l03923"></a>03923       buf-&gt;<a class="code" href="structu8g__str__size__struct.html#aa2a3fd154ae027b28174bb29ce3b0176">y_min</a> = tmp;
<a name="l03924"></a>03924 
<a name="l03925"></a>03925     tmp +=u8g-&gt;<a class="code" href="struct__u8g__t.html#a5ceb900871cf8b7c88050f2cbc3a09e0">glyph_height</a>;
<a name="l03926"></a>03926     <span class="keywordflow">if</span> ( buf-&gt;<a class="code" href="structu8g__str__size__struct.html#a24f7232070875251e83c34ae73b2f41c">y_max</a> &lt; tmp )
<a name="l03927"></a>03927       buf-&gt;<a class="code" href="structu8g__str__size__struct.html#a24f7232070875251e83c34ae73b2f41c">y_max</a> = tmp;
<a name="l03928"></a>03928 
<a name="l03929"></a>03929     <span class="comment">/* check and stop if the end of the string is reached */</span>
<a name="l03930"></a>03930     s++;
<a name="l03931"></a>03931     <span class="keywordflow">if</span> ( *s == <span class="charliteral">&#39;\0&#39;</span> )
<a name="l03932"></a>03932       <span class="keywordflow">break</span>;
<a name="l03933"></a>03933 
<a name="l03934"></a>03934     <span class="comment">/* if there are still more characters, add the delta to the next glyph */</span>
<a name="l03935"></a>03935     buf-&gt;<a class="code" href="structu8g__str__size__struct.html#aea376a9f764f4a9cf33e2c9ae174001a">w</a> += u8g-&gt;<a class="code" href="struct__u8g__t.html#a0047ff5ea98551bea150fb5c60f6a5ef">glyph_dx</a>;
<a name="l03936"></a>03936 
<a name="l03937"></a>03937     <span class="comment">/* load the next glyph information */</span>
<a name="l03938"></a>03938     <a class="code" href="u8glib__ex_8h.html#a560080c4acbd664f54b8a35922b40523">u8g_GetGlyph</a>(u8g, *s);
<a name="l03939"></a>03939   }
<a name="l03940"></a>03940 
<a name="l03941"></a>03941   <span class="comment">/* finally calculate the width of the last char */</span>
<a name="l03942"></a>03942   <span class="comment">/* if g was not updated in the for loop (strlen() == 1), then the initial offset x gets removed */</span>
<a name="l03943"></a>03943   buf-&gt;<a class="code" href="structu8g__str__size__struct.html#aea376a9f764f4a9cf33e2c9ae174001a">w</a> += u8g-&gt;<a class="code" href="struct__u8g__t.html#a46729652917f79624a7d0509f5236a08">glyph_width</a>;
<a name="l03944"></a>03944   <span class="comment">// buf-&gt;w += u8g_font_GetGlyphBBXOffX(u8g-&gt;font, g);</span>
<a name="l03945"></a>03945 
<a name="l03946"></a>03946   buf-&gt;<a class="code" href="structu8g__str__size__struct.html#aea376a9f764f4a9cf33e2c9ae174001a">w</a> += u8g-&gt;<a class="code" href="struct__u8g__t.html#a3bb3244ddc11d85c868e430e257a0ed8">glyph_x</a>;
<a name="l03947"></a>03947 }
<a name="l03948"></a>03948 
<a name="l03949"></a>03949 <span class="comment">/* calculate minimal box */</span>
<a name="l03950"></a><a class="code" href="u8glib__ex_8h.html#a5cdc592baaa722fbf4776e979dee4a46">03950</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a5cdc592baaa722fbf4776e979dee4a46">u8g_font_box_min</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <span class="keyword">const</span> <span class="keywordtype">char</span> *s, <a class="code" href="structu8g__str__size__struct.html">u8g_str_size_t</a> *buf)
<a name="l03951"></a>03951 {
<a name="l03952"></a>03952   <a class="code" href="u8glib__ex_8h.html#a3aa96676bbb30ccefe58e361caa012ed">u8g_font_calc_str_min_box</a>(u8g, s, buf);
<a name="l03953"></a>03953 }
<a name="l03954"></a>03954 
<a name="l03955"></a>03955 <span class="comment">/* calculate gA box, but do not calculate the overall width */</span>
<a name="l03956"></a><a class="code" href="u8glib__ex_8h.html#aef32e7e5d5535f62683102e977b1f3e5">03956</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#aef32e7e5d5535f62683102e977b1f3e5">u8g_font_box_left_gA</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <span class="keyword">const</span> <span class="keywordtype">char</span> *s, <a class="code" href="structu8g__str__size__struct.html">u8g_str_size_t</a> *buf)
<a name="l03957"></a>03957 {
<a name="l03958"></a>03958 
<a name="l03959"></a>03959 }
<a name="l03960"></a>03960 
<a name="l03961"></a>03961 <span class="comment">/* calculate gA box, including overall width */</span>
<a name="l03962"></a><a class="code" href="u8glib__ex_8h.html#a155ac1ef4e47fd1ad41977f0f4499aaf">03962</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a155ac1ef4e47fd1ad41977f0f4499aaf">u8g_font_box_all_gA</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <span class="keyword">const</span> <span class="keywordtype">char</span> *s, <a class="code" href="structu8g__str__size__struct.html">u8g_str_size_t</a> *buf)
<a name="l03963"></a>03963 {
<a name="l03964"></a>03964 
<a name="l03965"></a>03965 }
<a name="l03966"></a>03966 
<a name="l03967"></a>03967 
<a name="l03968"></a><a class="code" href="u8glib__ex_8h.html#a1bbe1128be7715d52df5a87866cad479">03968</a> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a1bbe1128be7715d52df5a87866cad479">u8g_font_get_str_box_fill_args</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <span class="keyword">const</span> <span class="keywordtype">char</span> *s, <a class="code" href="structu8g__str__size__struct.html">u8g_str_size_t</a> *buf, u8g_uint_t *x, u8g_uint_t *y, u8g_uint_t *width, u8g_uint_t *height)
<a name="l03969"></a>03969 {
<a name="l03970"></a>03970   <span class="comment">/*</span>
<a name="l03971"></a>03971 <span class="comment">  u8g_glyph_t g;</span>
<a name="l03972"></a>03972 <span class="comment">  g =</span>
<a name="l03973"></a>03973 <span class="comment">  */</span>
<a name="l03974"></a>03974   <a class="code" href="u8glib__ex_8h.html#a560080c4acbd664f54b8a35922b40523">u8g_GetGlyph</a>(u8g, *s);
<a name="l03975"></a>03975   *x += u8g-&gt;<a class="code" href="struct__u8g__t.html#a3bb3244ddc11d85c868e430e257a0ed8">glyph_x</a>;
<a name="l03976"></a>03976   *width = buf-&gt;<a class="code" href="structu8g__str__size__struct.html#aea376a9f764f4a9cf33e2c9ae174001a">w</a>;
<a name="l03977"></a>03977   *y -= buf-&gt;<a class="code" href="structu8g__str__size__struct.html#a24f7232070875251e83c34ae73b2f41c">y_max</a>;
<a name="l03978"></a>03978   <span class="comment">/* +1 because y_max is a height, this compensates the next step */</span>
<a name="l03979"></a>03979   <span class="comment">//*y += 1;</span>
<a name="l03980"></a>03980   <span class="comment">/* because the reference point is one below the string, this compensates the previous step */</span>
<a name="l03981"></a>03981   <span class="comment">//*y -= 1;</span>
<a name="l03982"></a>03982   *height = buf-&gt;<a class="code" href="structu8g__str__size__struct.html#a24f7232070875251e83c34ae73b2f41c">y_max</a>;
<a name="l03983"></a>03983   *height -= buf-&gt;<a class="code" href="structu8g__str__size__struct.html#aa2a3fd154ae027b28174bb29ce3b0176">y_min</a>;
<a name="l03984"></a>03984 }
<a name="l03985"></a>03985 
<a name="l03986"></a>03986 
<a name="l03987"></a><a class="code" href="u8glib__ex_8h.html#a08337748263d5b42bcf4a2a13caeb232">03987</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a08337748263d5b42bcf4a2a13caeb232">u8g_GetStrMinBox</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <span class="keyword">const</span> <span class="keywordtype">char</span> *s, u8g_uint_t *x, u8g_uint_t *y, u8g_uint_t *width, u8g_uint_t *height)
<a name="l03988"></a>03988 {
<a name="l03989"></a>03989   <a class="code" href="structu8g__str__size__struct.html">u8g_str_size_t</a> buf;
<a name="l03990"></a>03990 
<a name="l03991"></a>03991   <span class="keywordflow">if</span> ( *s == <span class="charliteral">&#39;\0&#39;</span> )
<a name="l03992"></a>03992   {
<a name="l03993"></a>03993     *width= 0;
<a name="l03994"></a>03994     *height = 0;
<a name="l03995"></a>03995     <span class="keywordflow">return</span>;
<a name="l03996"></a>03996   }
<a name="l03997"></a>03997 
<a name="l03998"></a>03998   <a class="code" href="u8glib__ex_8h.html#a3aa96676bbb30ccefe58e361caa012ed">u8g_font_calc_str_min_box</a>(u8g, s, &amp;buf);
<a name="l03999"></a>03999   <a class="code" href="u8glib__ex_8h.html#a1bbe1128be7715d52df5a87866cad479">u8g_font_get_str_box_fill_args</a>(u8g, s, &amp;buf, x, y, width, height);
<a name="l04000"></a>04000 }
<a name="l04001"></a>04001 
<a name="l04002"></a>04002 
<a name="l04003"></a><a class="code" href="u8glib__ex_8h.html#a1cf6ac958121dc2b77c0646443fcb877">04003</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a1cf6ac958121dc2b77c0646443fcb877">u8g_GetStrAMinBox</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <span class="keyword">const</span> <span class="keywordtype">char</span> *s, u8g_uint_t *x, u8g_uint_t *y, u8g_uint_t *width, u8g_uint_t *height)
<a name="l04004"></a>04004 {
<a name="l04005"></a>04005   <a class="code" href="structu8g__str__size__struct.html">u8g_str_size_t</a> buf;
<a name="l04006"></a>04006   uint8_t cap_a;
<a name="l04007"></a>04007 
<a name="l04008"></a>04008   <span class="keywordflow">if</span> ( *s == <span class="charliteral">&#39;\0&#39;</span> )
<a name="l04009"></a>04009   {
<a name="l04010"></a>04010     *width= 0;
<a name="l04011"></a>04011     *height = 0;
<a name="l04012"></a>04012     <span class="keywordflow">return</span>;
<a name="l04013"></a>04013   }
<a name="l04014"></a>04014 
<a name="l04015"></a>04015   cap_a = <a class="code" href="u8glib__ex_8h.html#adef4a3f7491cf25c21212d15052e0ba4">u8g_font_GetCapitalAHeight</a>(u8g-&gt;<a class="code" href="struct__u8g__t.html#a098e0a80024577b9bb8644bd1fcc2aeb">font</a>);
<a name="l04016"></a>04016   <a class="code" href="u8glib__ex_8h.html#a3aa96676bbb30ccefe58e361caa012ed">u8g_font_calc_str_min_box</a>(u8g, s, &amp;buf);
<a name="l04017"></a>04017   <span class="keywordflow">if</span> ( buf.<a class="code" href="structu8g__str__size__struct.html#a24f7232070875251e83c34ae73b2f41c">y_max</a> &lt; cap_a )
<a name="l04018"></a>04018     buf.<a class="code" href="structu8g__str__size__struct.html#a24f7232070875251e83c34ae73b2f41c">y_max</a> = cap_a;
<a name="l04019"></a>04019   <a class="code" href="u8glib__ex_8h.html#a1bbe1128be7715d52df5a87866cad479">u8g_font_get_str_box_fill_args</a>(u8g, s, &amp;buf, x, y, width, height);
<a name="l04020"></a>04020 }
<a name="l04021"></a>04021 
<a name="l04022"></a><a class="code" href="u8glib__ex_8h.html#a6e86ed6cd84c8f4aeeb00ff2cf411f27">04022</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a6e86ed6cd84c8f4aeeb00ff2cf411f27">u8g_SetFont</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <span class="keyword">const</span> u8g_fntpgm_uint8_t  *font)
<a name="l04023"></a>04023 {
<a name="l04024"></a>04024   <span class="keywordflow">if</span> ( u8g-&gt;<a class="code" href="struct__u8g__t.html#a098e0a80024577b9bb8644bd1fcc2aeb">font</a> != font )
<a name="l04025"></a>04025   {
<a name="l04026"></a>04026     u8g-&gt;<a class="code" href="struct__u8g__t.html#a098e0a80024577b9bb8644bd1fcc2aeb">font</a> = font;
<a name="l04027"></a>04027     <a class="code" href="u8glib__ex_8h.html#aa1bca928957c08c9598ff134ea7b92b1">u8g_UpdateRefHeight</a>(u8g);
<a name="l04028"></a>04028     <a class="code" href="u8glib__ex_8h.html#a9c3ea72b6af49eae8f5dd98c4a581ceb">u8g_SetFontPosBaseline</a>(u8g);
<a name="l04029"></a>04029   }
<a name="l04030"></a>04030 }
<a name="l04031"></a>04031 
<a name="l04032"></a>04032 <span class="comment">/*========================================================================*/</span>
<a name="l04033"></a>04033 <span class="comment">/* anti aliasing fonts */</span>
<a name="l04034"></a>04034 
<a name="l04035"></a><a class="code" href="u8glib__ex_8h.html#ae47a10bf44eb023918e222c609c4f056">04035</a> int8_t <a class="code" href="u8glib__ex_8h.html#ae47a10bf44eb023918e222c609c4f056">u8g_draw_aa_glyph</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding)
<a name="l04036"></a>04036 {
<a name="l04037"></a>04037   <span class="keyword">const</span> u8g_pgm_uint8_t *data;
<a name="l04038"></a>04038   uint8_t <a class="code" href="structu8g__str__size__struct.html#aea376a9f764f4a9cf33e2c9ae174001a">w</a>, h;
<a name="l04039"></a>04039   uint8_t i, j;
<a name="l04040"></a>04040   u8g_uint_t ix, iy;
<a name="l04041"></a>04041 
<a name="l04042"></a>04042   {
<a name="l04043"></a>04043     u8g_glyph_t g = <a class="code" href="u8glib__ex_8h.html#a560080c4acbd664f54b8a35922b40523">u8g_GetGlyph</a>(u8g, encoding);
<a name="l04044"></a>04044     <span class="keywordflow">if</span> ( g == NULL  )
<a name="l04045"></a>04045       <span class="keywordflow">return</span> 0;
<a name="l04046"></a>04046     data = <a class="code" href="u8glib__ex_8h.html#a66c59a617852db487bab9d5d0503d624">u8g_font_GetGlyphDataStart</a>(u8g-&gt;<a class="code" href="struct__u8g__t.html#a098e0a80024577b9bb8644bd1fcc2aeb">font</a>, g);
<a name="l04047"></a>04047   }
<a name="l04048"></a>04048 
<a name="l04049"></a>04049   w = u8g-&gt;<a class="code" href="struct__u8g__t.html#a46729652917f79624a7d0509f5236a08">glyph_width</a>;
<a name="l04050"></a>04050   h = u8g-&gt;<a class="code" href="struct__u8g__t.html#a5ceb900871cf8b7c88050f2cbc3a09e0">glyph_height</a>;
<a name="l04051"></a>04051 
<a name="l04052"></a>04052   x += u8g-&gt;<a class="code" href="struct__u8g__t.html#a3bb3244ddc11d85c868e430e257a0ed8">glyph_x</a>;
<a name="l04053"></a>04053   y -= u8g-&gt;<a class="code" href="struct__u8g__t.html#adedc940cd2a0a208f0ae275953228b53">glyph_y</a>;
<a name="l04054"></a>04054   y--;
<a name="l04055"></a>04055 
<a name="l04056"></a>04056   <span class="keywordflow">if</span> ( <a class="code" href="u8glib__ex_8h.html#a4ed53b97d1b77b8ecaff352f5b1c6161">u8g_IsBBXIntersection</a>(u8g, x, y-h+1, w, h) == 0 )
<a name="l04057"></a>04057     <span class="keywordflow">return</span> u8g-&gt;<a class="code" href="struct__u8g__t.html#a0047ff5ea98551bea150fb5c60f6a5ef">glyph_dx</a>;
<a name="l04058"></a>04058 
<a name="l04059"></a>04059   <span class="comment">/* now, w is reused as bytes per line */</span>
<a name="l04060"></a>04060   w += 3;
<a name="l04061"></a>04061   w /= 4;
<a name="l04062"></a>04062 
<a name="l04063"></a>04063   iy = <a class="code" href="structu8g__str__size__struct.html#aa8648aa0bb6df77525620af6fcb214cf">y</a>;
<a name="l04064"></a>04064   iy -= h;
<a name="l04065"></a>04065   iy++;
<a name="l04066"></a>04066 
<a name="l04067"></a>04067   <span class="keywordflow">for</span>( j = 0; j &lt; h; j++ )
<a name="l04068"></a>04068   {
<a name="l04069"></a>04069     ix = <a class="code" href="structu8g__str__size__struct.html#a3ed6e6c91c0b672a428f3f627dfd148b">x</a>;
<a name="l04070"></a>04070     <span class="keywordflow">for</span>( i = 0; i &lt; <a class="code" href="structu8g__str__size__struct.html#aea376a9f764f4a9cf33e2c9ae174001a">w</a>; i++ )
<a name="l04071"></a>04071     {
<a name="l04072"></a>04072       <a class="code" href="u8glib__ex_8h.html#a6b07af91d256375473e016f49f01b844">u8g_Draw4TPixel</a>(u8g, ix, iy, 0, <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>(data));
<a name="l04073"></a>04073       data++;
<a name="l04074"></a>04074       ix+=4;
<a name="l04075"></a>04075     }
<a name="l04076"></a>04076     iy++;
<a name="l04077"></a>04077   }
<a name="l04078"></a>04078   <span class="keywordflow">return</span> u8g-&gt;<a class="code" href="struct__u8g__t.html#a0047ff5ea98551bea150fb5c60f6a5ef">glyph_dx</a>;
<a name="l04079"></a>04079 }
<a name="l04080"></a>04080 
<a name="l04081"></a><a class="code" href="u8glib__ex_8h.html#a833c27a15041b0dc3c855413324acb31">04081</a> int8_t <a class="code" href="u8glib__ex_8h.html#a833c27a15041b0dc3c855413324acb31">u8g_DrawAAGlyph</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding)
<a name="l04082"></a>04082 {
<a name="l04083"></a>04083   y += u8g-&gt;<a class="code" href="struct__u8g__t.html#a6be898df5b515d31b02d56adab72cfef">font_calc_vref</a>(u8g);
<a name="l04084"></a>04084   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#ae47a10bf44eb023918e222c609c4f056">u8g_draw_aa_glyph</a>(u8g, x, y, encoding);
<a name="l04085"></a>04085 }
<a name="l04086"></a>04086 
<a name="l04087"></a><a class="code" href="u8glib__ex_8h.html#aaf51395dc0fc4044fe1ddcb87ca78084">04087</a> u8g_uint_t <a class="code" href="u8glib__ex_8h.html#aaf51395dc0fc4044fe1ddcb87ca78084">u8g_DrawAAStr</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, <span class="keyword">const</span> <span class="keywordtype">char</span> *s)
<a name="l04088"></a>04088 {
<a name="l04089"></a>04089   u8g_uint_t t = 0;
<a name="l04090"></a>04090   int8_t d;
<a name="l04091"></a>04091 
<a name="l04092"></a>04092   <span class="keywordflow">if</span> ( <a class="code" href="u8glib__ex_8h.html#ad85eb74dabd39bef01ec6c85d68bf0bc">u8g_font_GetFormat</a>(u8g-&gt;<a class="code" href="struct__u8g__t.html#a098e0a80024577b9bb8644bd1fcc2aeb">font</a>)  != 2 )
<a name="l04093"></a>04093     <span class="keywordflow">return</span> 0;
<a name="l04094"></a>04094   <span class="comment">//u8g_uint_t u8g_GetStrWidth(u8g, s);</span>
<a name="l04095"></a>04095   <span class="comment">//u8g_font_GetFontAscent(u8g-&gt;font)-u8g_font_GetFontDescent(u8g-&gt;font);</span>
<a name="l04096"></a>04096 
<a name="l04097"></a>04097   y += u8g-&gt;<a class="code" href="struct__u8g__t.html#a6be898df5b515d31b02d56adab72cfef">font_calc_vref</a>(u8g);
<a name="l04098"></a>04098 
<a name="l04099"></a>04099   <span class="keywordflow">while</span>( *s != <span class="charliteral">&#39;\0&#39;</span> )
<a name="l04100"></a>04100   {
<a name="l04101"></a>04101     d = <a class="code" href="u8glib__ex_8h.html#ae47a10bf44eb023918e222c609c4f056">u8g_draw_aa_glyph</a>(u8g, x, y, *s);
<a name="l04102"></a>04102     x += d;
<a name="l04103"></a>04103     t += d;
<a name="l04104"></a>04104     s++;
<a name="l04105"></a>04105   }
<a name="l04106"></a>04106   <span class="keywordflow">return</span> t;
<a name="l04107"></a>04107 }
<a name="l04108"></a>04108 
<a name="l04109"></a>04109 <span class="comment">// ============== u8g_page.c ================</span>
<a name="l04110"></a>04110 
<a name="l04111"></a>04111 <span class="comment">/*</span>
<a name="l04112"></a>04112 <span class="comment"></span>
<a name="l04113"></a>04113 <span class="comment">  u8g_page.c</span>
<a name="l04114"></a>04114 <span class="comment"></span>
<a name="l04115"></a>04115 <span class="comment">  page helper functions, only called by the dev handler.</span>
<a name="l04116"></a>04116 <span class="comment"></span>
<a name="l04117"></a>04117 <span class="comment">  Universal 8bit Graphics Library</span>
<a name="l04118"></a>04118 <span class="comment"></span>
<a name="l04119"></a>04119 <span class="comment">  Copyright (c) 2011, olikraus@gmail.com</span>
<a name="l04120"></a>04120 <span class="comment">  All rights reserved.</span>
<a name="l04121"></a>04121 <span class="comment"></span>
<a name="l04122"></a>04122 <span class="comment">  Redistribution and use in source and binary forms, with or without modification,</span>
<a name="l04123"></a>04123 <span class="comment">  are permitted provided that the following conditions are met:</span>
<a name="l04124"></a>04124 <span class="comment"></span>
<a name="l04125"></a>04125 <span class="comment">  * Redistributions of source code must retain the above copyright notice, this list</span>
<a name="l04126"></a>04126 <span class="comment">    of conditions and the following disclaimer.</span>
<a name="l04127"></a>04127 <span class="comment"></span>
<a name="l04128"></a>04128 <span class="comment">  * Redistributions in binary form must reproduce the above copyright notice, this</span>
<a name="l04129"></a>04129 <span class="comment">    list of conditions and the following disclaimer in the documentation and/or other</span>
<a name="l04130"></a>04130 <span class="comment">    materials provided with the distribution.</span>
<a name="l04131"></a>04131 <span class="comment"></span>
<a name="l04132"></a>04132 <span class="comment">  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND</span>
<a name="l04133"></a>04133 <span class="comment">  CONTRIBUTORS &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES,</span>
<a name="l04134"></a>04134 <span class="comment">  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF</span>
<a name="l04135"></a>04135 <span class="comment">  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span>
<a name="l04136"></a>04136 <span class="comment">  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR</span>
<a name="l04137"></a>04137 <span class="comment">  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</span>
<a name="l04138"></a>04138 <span class="comment">  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT</span>
<a name="l04139"></a>04139 <span class="comment">  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span>
<a name="l04140"></a>04140 <span class="comment">  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span>
<a name="l04141"></a>04141 <span class="comment">  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,</span>
<a name="l04142"></a>04142 <span class="comment">  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span>
<a name="l04143"></a>04143 <span class="comment">  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF</span>
<a name="l04144"></a>04144 <span class="comment">  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span>
<a name="l04145"></a>04145 <span class="comment"></span>
<a name="l04146"></a>04146 <span class="comment"></span>
<a name="l04147"></a>04147 <span class="comment">*/</span>
<a name="l04148"></a>04148 
<a name="l04149"></a>04149 <span class="comment">/*</span>
<a name="l04150"></a>04150 <span class="comment">  setup page count structure</span>
<a name="l04151"></a>04151 <span class="comment">  conditions: page_height &lt;= total_height</span>
<a name="l04152"></a>04152 <span class="comment">*/</span>
<a name="l04153"></a><a class="code" href="u8glib__ex_8h.html#aec06e309694a4a16620c6a9991ffb096">04153</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#aec06e309694a4a16620c6a9991ffb096">u8g_page_Init</a>(<a class="code" href="struct__u8g__page__t.html">u8g_page_t</a> *p, u8g_uint_t page_height, u8g_uint_t total_height )
<a name="l04154"></a>04154 {
<a name="l04155"></a>04155   p-&gt;<a class="code" href="struct__u8g__page__t.html#a0810d393e31b561104c34655919e0e1a">page_height</a> = page_height;
<a name="l04156"></a>04156   p-&gt;<a class="code" href="struct__u8g__page__t.html#a64804ce3ac5cacbd32e9793e3fe63ec9">total_height</a> = total_height;
<a name="l04157"></a>04157   p-&gt;<a class="code" href="struct__u8g__page__t.html#a2f83e9b107394d95fc3967db09e97d76">page</a> = 0;
<a name="l04158"></a>04158   <a class="code" href="u8glib__ex_8h.html#a55151c99b93f1d585fb20fae91404e4d">u8g_page_First</a>(p);
<a name="l04159"></a>04159 }
<a name="l04160"></a>04160 
<a name="l04161"></a><a class="code" href="u8glib__ex_8h.html#a55151c99b93f1d585fb20fae91404e4d">04161</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a55151c99b93f1d585fb20fae91404e4d">u8g_page_First</a>(<a class="code" href="struct__u8g__page__t.html">u8g_page_t</a> *p)
<a name="l04162"></a>04162 {
<a name="l04163"></a>04163   p-&gt;<a class="code" href="struct__u8g__page__t.html#ad849a6c82137ac60b0a2bd19cbd21b5a">page_y0</a> = 0;
<a name="l04164"></a>04164   p-&gt;<a class="code" href="struct__u8g__page__t.html#ad80e065e972df7c230dccebf745006fb">page_y1</a> = p-&gt;<a class="code" href="struct__u8g__page__t.html#a0810d393e31b561104c34655919e0e1a">page_height</a>;
<a name="l04165"></a>04165   p-&gt;<a class="code" href="struct__u8g__page__t.html#ad80e065e972df7c230dccebf745006fb">page_y1</a>--;
<a name="l04166"></a>04166   p-&gt;<a class="code" href="struct__u8g__page__t.html#a2f83e9b107394d95fc3967db09e97d76">page</a> = 0;
<a name="l04167"></a>04167 }
<a name="l04168"></a>04168 
<a name="l04169"></a><a class="code" href="u8glib__ex_8h.html#a9e64e9aa126a52fbffccdb6b244b5a64">04169</a> uint8_t <a class="code" href="u8glib__ex_8h.html#a9e64e9aa126a52fbffccdb6b244b5a64">u8g_page_Next</a>(<a class="code" href="struct__u8g__page__t.html">u8g_page_t</a> * p)
<a name="l04170"></a>04170 {
<a name="l04171"></a>04171   <span class="keyword">register</span> u8g_uint_t y1;
<a name="l04172"></a>04172   p-&gt;<a class="code" href="struct__u8g__page__t.html#ad849a6c82137ac60b0a2bd19cbd21b5a">page_y0</a> += p-&gt;<a class="code" href="struct__u8g__page__t.html#a0810d393e31b561104c34655919e0e1a">page_height</a>;
<a name="l04173"></a>04173   <span class="keywordflow">if</span> ( p-&gt;<a class="code" href="struct__u8g__page__t.html#ad849a6c82137ac60b0a2bd19cbd21b5a">page_y0</a> &gt;= p-&gt;<a class="code" href="struct__u8g__page__t.html#a64804ce3ac5cacbd32e9793e3fe63ec9">total_height</a> )
<a name="l04174"></a>04174     <span class="keywordflow">return</span> 0;
<a name="l04175"></a>04175   p-&gt;<a class="code" href="struct__u8g__page__t.html#a2f83e9b107394d95fc3967db09e97d76">page</a>++;
<a name="l04176"></a>04176   y1 = p-&gt;<a class="code" href="struct__u8g__page__t.html#ad80e065e972df7c230dccebf745006fb">page_y1</a>;
<a name="l04177"></a>04177   y1 += p-&gt;<a class="code" href="struct__u8g__page__t.html#a0810d393e31b561104c34655919e0e1a">page_height</a>;
<a name="l04178"></a>04178   <span class="keywordflow">if</span> ( y1 &gt;= p-&gt;<a class="code" href="struct__u8g__page__t.html#a64804ce3ac5cacbd32e9793e3fe63ec9">total_height</a> )
<a name="l04179"></a>04179   {
<a name="l04180"></a>04180     y1 = p-&gt;<a class="code" href="struct__u8g__page__t.html#a64804ce3ac5cacbd32e9793e3fe63ec9">total_height</a>;
<a name="l04181"></a>04181     y1--;
<a name="l04182"></a>04182   }
<a name="l04183"></a>04183   p-&gt;<a class="code" href="struct__u8g__page__t.html#ad80e065e972df7c230dccebf745006fb">page_y1</a> = y1;
<a name="l04184"></a>04184 
<a name="l04185"></a>04185   <span class="keywordflow">return</span> 1;
<a name="l04186"></a>04186 }
<a name="l04187"></a>04187 
<a name="l04188"></a>04188 <span class="comment">// =============== u8g_clip.c ================</span>
<a name="l04189"></a>04189 
<a name="l04190"></a>04190 <span class="comment">/*</span>
<a name="l04191"></a>04191 <span class="comment"></span>
<a name="l04192"></a>04192 <span class="comment">  u8g_clip.c</span>
<a name="l04193"></a>04193 <span class="comment"></span>
<a name="l04194"></a>04194 <span class="comment">  procedures for clipping</span>
<a name="l04195"></a>04195 <span class="comment">  taken over from procs in u8g_pb.c</span>
<a name="l04196"></a>04196 <span class="comment"></span>
<a name="l04197"></a>04197 <span class="comment">  Universal 8bit Graphics Library</span>
<a name="l04198"></a>04198 <span class="comment"></span>
<a name="l04199"></a>04199 <span class="comment">  Copyright (c) 2012, olikraus@gmail.com</span>
<a name="l04200"></a>04200 <span class="comment">  All rights reserved.</span>
<a name="l04201"></a>04201 <span class="comment"></span>
<a name="l04202"></a>04202 <span class="comment">  Redistribution and use in source and binary forms, with or without modification,</span>
<a name="l04203"></a>04203 <span class="comment">  are permitted provided that the following conditions are met:</span>
<a name="l04204"></a>04204 <span class="comment"></span>
<a name="l04205"></a>04205 <span class="comment">  * Redistributions of source code must retain the above copyright notice, this list</span>
<a name="l04206"></a>04206 <span class="comment">    of conditions and the following disclaimer.</span>
<a name="l04207"></a>04207 <span class="comment"></span>
<a name="l04208"></a>04208 <span class="comment">  * Redistributions in binary form must reproduce the above copyright notice, this</span>
<a name="l04209"></a>04209 <span class="comment">    list of conditions and the following disclaimer in the documentation and/or other</span>
<a name="l04210"></a>04210 <span class="comment">    materials provided with the distribution.</span>
<a name="l04211"></a>04211 <span class="comment"></span>
<a name="l04212"></a>04212 <span class="comment">  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND</span>
<a name="l04213"></a>04213 <span class="comment">  CONTRIBUTORS &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES,</span>
<a name="l04214"></a>04214 <span class="comment">  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF</span>
<a name="l04215"></a>04215 <span class="comment">  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span>
<a name="l04216"></a>04216 <span class="comment">  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR</span>
<a name="l04217"></a>04217 <span class="comment">  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</span>
<a name="l04218"></a>04218 <span class="comment">  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT</span>
<a name="l04219"></a>04219 <span class="comment">  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span>
<a name="l04220"></a>04220 <span class="comment">  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span>
<a name="l04221"></a>04221 <span class="comment">  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,</span>
<a name="l04222"></a>04222 <span class="comment">  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span>
<a name="l04223"></a>04223 <span class="comment">  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF</span>
<a name="l04224"></a>04224 <span class="comment">  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span>
<a name="l04225"></a>04225 <span class="comment"></span>
<a name="l04226"></a>04226 <span class="comment">  Notes</span>
<a name="l04227"></a>04227 <span class="comment"></span>
<a name="l04228"></a>04228 <span class="comment">  This is one of the most critical parts of u8glib. It must be fast, but still reliable.</span>
<a name="l04229"></a>04229 <span class="comment">  Based on the intersection program (see tools folder), there is minimized version of</span>
<a name="l04230"></a>04230 <span class="comment">  the condition for the intersaction test:</span>
<a name="l04231"></a>04231 <span class="comment">    minimized version</span>
<a name="l04232"></a>04232 <span class="comment">    ---1----0 1             b1 &lt;= a2 &amp;&amp; b1 &gt; b2</span>
<a name="l04233"></a>04233 <span class="comment">    -----1--0 1             b2 &gt;= a1 &amp;&amp; b1 &gt; b2</span>
<a name="l04234"></a>04234 <span class="comment">    ---1-1--- 1             b1 &lt;= a2 &amp;&amp; b2 &gt;= a1</span>
<a name="l04235"></a>04235 <span class="comment">  It includes the assumption, that a1 &lt;= a2 is always true (correct, because</span>
<a name="l04236"></a>04236 <span class="comment">  a1, a2 are the page dimensions.</span>
<a name="l04237"></a>04237 <span class="comment"></span>
<a name="l04238"></a>04238 <span class="comment">  The direct implementation of the above result is done in:</span>
<a name="l04239"></a>04239 <span class="comment">  uint8_t u8g_is_intersection_boolean(u8g_uint_t a0, u8g_uint_t a1, u8g_uint_t v0, u8g_uint_t v1)</span>
<a name="l04240"></a>04240 <span class="comment">  However, this is slower than a decision tree version:</span>
<a name="l04241"></a>04241 <span class="comment">  static uint8_t u8g_is_intersection_decision_tree(u8g_uint_t a0, u8g_uint_t a1, u8g_uint_t v0, u8g_uint_t v1)</span>
<a name="l04242"></a>04242 <span class="comment">  Also suprising is, that the macro implementation is slower than the inlined version.</span>
<a name="l04243"></a>04243 <span class="comment"></span>
<a name="l04244"></a>04244 <span class="comment">  The decision tree is based on the expansion of the truth table.</span>
<a name="l04245"></a>04245 <span class="comment"></span>
<a name="l04246"></a>04246 <span class="comment">*/</span>
<a name="l04247"></a>04247 
<a name="l04248"></a>04248 
<a name="l04249"></a>04249 <span class="preprocessor">#ifdef __GNUC__</span>
<a name="l04250"></a>04250 <span class="preprocessor"></span><span class="preprocessor">#define U8G_ALWAYS_INLINE __inline__ __attribute__((always_inline))</span>
<a name="l04251"></a>04251 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l04252"></a><a class="code" href="u8glib__ex_8h.html#a1f6de7ea71f53c66594f244a0a06e93c">04252</a> <span class="preprocessor"></span><span class="preprocessor">#define U8G_ALWAYS_INLINE</span>
<a name="l04253"></a>04253 <span class="preprocessor"></span><span class="preprocessor"> #endif</span>
<a name="l04254"></a>04254 <span class="preprocessor"></span>
<a name="l04255"></a>04255 <span class="comment">/*</span>
<a name="l04256"></a>04256 <span class="comment">  intersection assumptions:</span>
<a name="l04257"></a>04257 <span class="comment">    a1 &lt;= a2 is always true</span>
<a name="l04258"></a>04258 <span class="comment"></span>
<a name="l04259"></a>04259 <span class="comment">    minimized version</span>
<a name="l04260"></a>04260 <span class="comment">    ---1----0 1             b1 &lt;= a2 &amp;&amp; b1 &gt; b2</span>
<a name="l04261"></a>04261 <span class="comment">    -----1--0 1             b2 &gt;= a1 &amp;&amp; b1 &gt; b2</span>
<a name="l04262"></a>04262 <span class="comment">    ---1-1--- 1             b1 &lt;= a2 &amp;&amp; b2 &gt;= a1</span>
<a name="l04263"></a>04263 <span class="comment">  */</span>
<a name="l04264"></a>04264 
<a name="l04265"></a>04265 <span class="preprocessor">#ifdef OLD_CODE_WHICH_IS_TOO_SLOW</span>
<a name="l04266"></a>04266 <span class="preprocessor"></span><span class="keyword">static</span> uint8_t u8g_is_intersection_boolean(u8g_uint_t a0, u8g_uint_t a1, u8g_uint_t v0, u8g_uint_t v1)
<a name="l04267"></a>04267 {
<a name="l04268"></a>04268   uint8_t c1, c2, c3, tmp;
<a name="l04269"></a>04269   c1 = v0 &lt;= a1;
<a name="l04270"></a>04270   c2 = v1 &gt;= a0;
<a name="l04271"></a>04271   c3 = v0 &gt; v1;
<a name="l04272"></a>04272 
<a name="l04273"></a>04273   tmp = c1;
<a name="l04274"></a>04274   c1 &amp;= c2;
<a name="l04275"></a>04275   c2 &amp;= c3;
<a name="l04276"></a>04276   c3 &amp;= tmp;
<a name="l04277"></a>04277   c1 |= c2;
<a name="l04278"></a>04278   c1 |= c3;
<a name="l04279"></a>04279   <span class="keywordflow">return</span> c1 &amp; 1;
<a name="l04280"></a>04280 }
<a name="l04281"></a>04281 <span class="preprocessor">#endif</span>
<a name="l04282"></a>04282 <span class="preprocessor"></span>
<a name="l04283"></a><a class="code" href="u8glib__ex_8h.html#ad1f4fba61fdfc569bb5e04f9564c512e">04283</a> <span class="preprocessor">#define U8G_IS_INTERSECTION_MACRO(a0,a1,v0,v1) ((uint8_t)( (v0) &lt;= (a1) ) ? ( ( (v1) &gt;= (a0) ) ? ( 1 ) : ( (v0) &gt; (v1) ) ) : ( ( (v1) &gt;= (a0) ) ? ( (v0) &gt; (v1) ) : ( 0 ) ))</span>
<a name="l04284"></a>04284 <span class="preprocessor"></span>
<a name="l04285"></a>04285 <span class="comment">//static uint8_t u8g_is_intersection_decision_tree(u8g_uint_t a0, u8g_uint_t a1, u8g_uint_t v0, u8g_uint_t v1) U8G_ALWAYS_INLINE;</span>
<a name="l04286"></a><a class="code" href="u8glib__ex_8h.html#aca3e9ca6cda359c0945bc53641037346">04286</a> <span class="keyword">static</span> uint8_t <a class="code" href="u8glib__ex_8h.html#a1f6de7ea71f53c66594f244a0a06e93c">U8G_ALWAYS_INLINE</a> <a class="code" href="u8glib__ex_8h.html#aca3e9ca6cda359c0945bc53641037346">u8g_is_intersection_decision_tree</a>(u8g_uint_t a0, u8g_uint_t a1, u8g_uint_t v0, u8g_uint_t v1)
<a name="l04287"></a>04287 {
<a name="l04288"></a>04288   <span class="comment">/* surprisingly the macro leads to larger code */</span>
<a name="l04289"></a>04289   <span class="comment">/* return U8G_IS_INTERSECTION_MACRO(a0,a1,v0,v1); */</span>
<a name="l04290"></a>04290   <span class="keywordflow">if</span> ( v0 &lt;= a1 )
<a name="l04291"></a>04291   {
<a name="l04292"></a>04292     <span class="keywordflow">if</span> ( v1 &gt;= a0 )
<a name="l04293"></a>04293     {
<a name="l04294"></a>04294       <span class="keywordflow">return</span> 1;
<a name="l04295"></a>04295     }
<a name="l04296"></a>04296     <span class="keywordflow">else</span>
<a name="l04297"></a>04297     {
<a name="l04298"></a>04298       <span class="keywordflow">if</span> ( v0 &gt; v1 )
<a name="l04299"></a>04299       {
<a name="l04300"></a>04300         <span class="keywordflow">return</span> 1;
<a name="l04301"></a>04301       }
<a name="l04302"></a>04302       <span class="keywordflow">else</span>
<a name="l04303"></a>04303       {
<a name="l04304"></a>04304         <span class="keywordflow">return</span> 0;
<a name="l04305"></a>04305       }
<a name="l04306"></a>04306     }
<a name="l04307"></a>04307   }
<a name="l04308"></a>04308   <span class="keywordflow">else</span>
<a name="l04309"></a>04309   {
<a name="l04310"></a>04310     <span class="keywordflow">if</span> ( v1 &gt;= a0 )
<a name="l04311"></a>04311     {
<a name="l04312"></a>04312       <span class="keywordflow">if</span> ( v0 &gt; v1 )
<a name="l04313"></a>04313       {
<a name="l04314"></a>04314         <span class="keywordflow">return</span> 1;
<a name="l04315"></a>04315       }
<a name="l04316"></a>04316       <span class="keywordflow">else</span>
<a name="l04317"></a>04317       {
<a name="l04318"></a>04318         <span class="keywordflow">return</span> 0;
<a name="l04319"></a>04319       }
<a name="l04320"></a>04320     }
<a name="l04321"></a>04321     <span class="keywordflow">else</span>
<a name="l04322"></a>04322     {
<a name="l04323"></a>04323       <span class="keywordflow">return</span> 0;
<a name="l04324"></a>04324     }
<a name="l04325"></a>04325   }
<a name="l04326"></a>04326 }
<a name="l04327"></a>04327 
<a name="l04328"></a>04328 
<a name="l04329"></a><a class="code" href="u8glib__ex_8h.html#a4ed53b97d1b77b8ecaff352f5b1c6161">04329</a> uint8_t <a class="code" href="u8glib__ex_8h.html#a4ed53b97d1b77b8ecaff352f5b1c6161">u8g_IsBBXIntersection</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h)
<a name="l04330"></a>04330 {
<a name="l04331"></a>04331   <span class="keyword">register</span> u8g_uint_t tmp;
<a name="l04332"></a>04332   tmp = <a class="code" href="structu8g__str__size__struct.html#aa8648aa0bb6df77525620af6fcb214cf">y</a>;
<a name="l04333"></a>04333   tmp += h;
<a name="l04334"></a>04334   tmp--;
<a name="l04335"></a>04335   <span class="keywordflow">if</span> ( <a class="code" href="u8glib__ex_8h.html#aca3e9ca6cda359c0945bc53641037346">u8g_is_intersection_decision_tree</a>(u8g-&gt;<a class="code" href="struct__u8g__t.html#a894ed7c2dd9e859af28bc0c25f673fae">current_page</a>.<a class="code" href="struct__u8g__box__t.html#a33614956497a398eeea02cf06ae0ee34">y0</a>, u8g-&gt;<a class="code" href="struct__u8g__t.html#a894ed7c2dd9e859af28bc0c25f673fae">current_page</a>.<a class="code" href="struct__u8g__box__t.html#a8977e61ef70ab6db468b58d77b1031e4">y1</a>, y, tmp) == 0 )
<a name="l04336"></a>04336     <span class="keywordflow">return</span> 0;
<a name="l04337"></a>04337 
<a name="l04338"></a>04338   tmp = <a class="code" href="structu8g__str__size__struct.html#a3ed6e6c91c0b672a428f3f627dfd148b">x</a>;
<a name="l04339"></a>04339   tmp += <a class="code" href="structu8g__str__size__struct.html#aea376a9f764f4a9cf33e2c9ae174001a">w</a>;
<a name="l04340"></a>04340   tmp--;
<a name="l04341"></a>04341   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#aca3e9ca6cda359c0945bc53641037346">u8g_is_intersection_decision_tree</a>(u8g-&gt;<a class="code" href="struct__u8g__t.html#a894ed7c2dd9e859af28bc0c25f673fae">current_page</a>.<a class="code" href="struct__u8g__box__t.html#a1551f8fbcff0e015b97c9d0a6fc83b7a">x0</a>, u8g-&gt;<a class="code" href="struct__u8g__t.html#a894ed7c2dd9e859af28bc0c25f673fae">current_page</a>.<a class="code" href="struct__u8g__box__t.html#ae903dfc85a06d24c856d01ecc888a805">x1</a>, x, tmp);
<a name="l04342"></a>04342 }
<a name="l04343"></a>04343 
<a name="l04344"></a>04344 <span class="comment">// ============= u8g_com_arduino_std_sw_spi.c =====================</span>
<a name="l04345"></a>04345 
<a name="l04346"></a>04346 <span class="comment">/*</span>
<a name="l04347"></a>04347 <span class="comment"></span>
<a name="l04348"></a>04348 <span class="comment">  u8g_arduino_std_sw_spi.c</span>
<a name="l04349"></a>04349 <span class="comment"></span>
<a name="l04350"></a>04350 <span class="comment">  Universal 8bit Graphics Library</span>
<a name="l04351"></a>04351 <span class="comment"></span>
<a name="l04352"></a>04352 <span class="comment">  Copyright (c) 2011, olikraus@gmail.com</span>
<a name="l04353"></a>04353 <span class="comment">  All rights reserved.</span>
<a name="l04354"></a>04354 <span class="comment"></span>
<a name="l04355"></a>04355 <span class="comment">  Redistribution and use in source and binary forms, with or without modification,</span>
<a name="l04356"></a>04356 <span class="comment">  are permitted provided that the following conditions are met:</span>
<a name="l04357"></a>04357 <span class="comment"></span>
<a name="l04358"></a>04358 <span class="comment">  * Redistributions of source code must retain the above copyright notice, this list</span>
<a name="l04359"></a>04359 <span class="comment">    of conditions and the following disclaimer.</span>
<a name="l04360"></a>04360 <span class="comment"></span>
<a name="l04361"></a>04361 <span class="comment">  * Redistributions in binary form must reproduce the above copyright notice, this</span>
<a name="l04362"></a>04362 <span class="comment">    list of conditions and the following disclaimer in the documentation and/or other</span>
<a name="l04363"></a>04363 <span class="comment">    materials provided with the distribution.</span>
<a name="l04364"></a>04364 <span class="comment"></span>
<a name="l04365"></a>04365 <span class="comment">  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND</span>
<a name="l04366"></a>04366 <span class="comment">  CONTRIBUTORS &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES,</span>
<a name="l04367"></a>04367 <span class="comment">  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF</span>
<a name="l04368"></a>04368 <span class="comment">  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span>
<a name="l04369"></a>04369 <span class="comment">  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR</span>
<a name="l04370"></a>04370 <span class="comment">  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</span>
<a name="l04371"></a>04371 <span class="comment">  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT</span>
<a name="l04372"></a>04372 <span class="comment">  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span>
<a name="l04373"></a>04373 <span class="comment">  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span>
<a name="l04374"></a>04374 <span class="comment">  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,</span>
<a name="l04375"></a>04375 <span class="comment">  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span>
<a name="l04376"></a>04376 <span class="comment">  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF</span>
<a name="l04377"></a>04377 <span class="comment">  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span>
<a name="l04378"></a>04378 <span class="comment"></span>
<a name="l04379"></a>04379 <span class="comment">*/</span>
<a name="l04380"></a>04380 
<a name="l04381"></a><a class="code" href="u8glib__ex_8h.html#a9976dae8754fa4909ce1ca650d8f6ff6">04381</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a9976dae8754fa4909ce1ca650d8f6ff6">u8g_arduino_sw_spi_shift_out</a>(uint8_t dataPin, uint8_t clockPin, uint8_t val)
<a name="l04382"></a>04382 {
<a name="l04383"></a>04383   uint8_t i = 8;
<a name="l04384"></a>04384   <span class="keywordflow">do</span>
<a name="l04385"></a>04385   {
<a name="l04386"></a>04386     <span class="keywordflow">if</span> ( val &amp; 128 )
<a name="l04387"></a>04387       digitalWrite(dataPin, HIGH);
<a name="l04388"></a>04388     <span class="keywordflow">else</span>
<a name="l04389"></a>04389       digitalWrite(dataPin, LOW);
<a name="l04390"></a>04390     val &lt;&lt;= 1;
<a name="l04391"></a>04391     <a class="code" href="u8glib__ex_8h.html#a1920961449fcdb3579c6c7e3d6e41877">u8g_MicroDelay</a>();           <span class="comment">/* 23 Sep 2012 */</span>
<a name="l04392"></a>04392     <span class="comment">//delay(1);</span>
<a name="l04393"></a>04393     digitalWrite(clockPin, HIGH);
<a name="l04394"></a>04394     <a class="code" href="u8glib__ex_8h.html#a1920961449fcdb3579c6c7e3d6e41877">u8g_MicroDelay</a>();           <span class="comment">/* 23 Sep 2012 */</span>
<a name="l04395"></a>04395     <span class="comment">//delay(1);</span>
<a name="l04396"></a>04396     digitalWrite(clockPin, LOW);
<a name="l04397"></a>04397     <a class="code" href="u8glib__ex_8h.html#a1920961449fcdb3579c6c7e3d6e41877">u8g_MicroDelay</a>();           <span class="comment">/* 23 Sep 2012 */</span>
<a name="l04398"></a>04398     <span class="comment">//delay(1);</span>
<a name="l04399"></a>04399     i--;
<a name="l04400"></a>04400   } <span class="keywordflow">while</span>( i != 0 );
<a name="l04401"></a>04401 }
<a name="l04402"></a>04402 
<a name="l04403"></a><a class="code" href="u8glib__ex_8h.html#a3cfa88752e7f324e349dd933b867ef4d">04403</a> uint8_t <a class="code" href="u8glib__ex_8h.html#a3cfa88752e7f324e349dd933b867ef4d">u8g_com_arduino_std_sw_spi_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t msg, uint8_t arg_val, <span class="keywordtype">void</span> *arg_ptr)
<a name="l04404"></a>04404 {
<a name="l04405"></a>04405   <span class="keywordflow">switch</span>(msg)
<a name="l04406"></a>04406   {
<a name="l04407"></a>04407     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#a4c4b2a86756c48511ee2d80fdce8fdc1">U8G_COM_MSG_INIT</a>:
<a name="l04408"></a>04408       <a class="code" href="u8glib__ex_8h.html#a4429917c6f548b28732dbc09d4c3eb08">u8g_com_arduino_assign_pin_output_high</a>(u8g);
<a name="l04409"></a>04409       <a class="code" href="u8glib__ex_8h.html#ab23512398e22c34ec912a3f2bf86234d">u8g_com_arduino_digital_write</a>(u8g, <a class="code" href="u8glib__ex_8h.html#a204d15080393ba561cf64aea48892c9c">U8G_PI_SCK</a>, LOW);
<a name="l04410"></a>04410       <a class="code" href="u8glib__ex_8h.html#ab23512398e22c34ec912a3f2bf86234d">u8g_com_arduino_digital_write</a>(u8g, <a class="code" href="u8glib__ex_8h.html#ac2fece13a6875b4bb4c040c3f6f6cded">U8G_PI_MOSI</a>, LOW);
<a name="l04411"></a>04411       <span class="keywordflow">break</span>;
<a name="l04412"></a>04412 
<a name="l04413"></a>04413     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#a225a41aaa3afd074315faf810d8c72b7">U8G_COM_MSG_STOP</a>:
<a name="l04414"></a>04414       <span class="keywordflow">break</span>;
<a name="l04415"></a>04415 
<a name="l04416"></a>04416     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#ae9e98c1cadea862056b3684ea79626c7">U8G_COM_MSG_RESET</a>:
<a name="l04417"></a>04417       <span class="keywordflow">if</span> ( u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#ac45f46016ed7f6fbd43ec109db4b14f6">U8G_PI_RESET</a>] != <a class="code" href="u8glib__ex_8h.html#a95eb8a56571912e17c5f40da8a068c33">U8G_PIN_NONE</a> )
<a name="l04418"></a>04418         <a class="code" href="u8glib__ex_8h.html#ab23512398e22c34ec912a3f2bf86234d">u8g_com_arduino_digital_write</a>(u8g, <a class="code" href="u8glib__ex_8h.html#ac45f46016ed7f6fbd43ec109db4b14f6">U8G_PI_RESET</a>, arg_val);
<a name="l04419"></a>04419       <span class="keywordflow">break</span>;
<a name="l04420"></a>04420 
<a name="l04421"></a>04421     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#ac5b6ded098abcb5de9ab579c2c278dec">U8G_COM_MSG_CHIP_SELECT</a>:
<a name="l04422"></a>04422       <span class="keywordflow">if</span> ( arg_val == 0 )
<a name="l04423"></a>04423       {
<a name="l04424"></a>04424         <span class="comment">/* disable */</span>
<a name="l04425"></a>04425         <a class="code" href="u8glib__ex_8h.html#ab23512398e22c34ec912a3f2bf86234d">u8g_com_arduino_digital_write</a>(u8g, <a class="code" href="u8glib__ex_8h.html#a4fa6b381ad482e6c679f73388c28a1d3">U8G_PI_CS</a>, HIGH);
<a name="l04426"></a>04426       }
<a name="l04427"></a>04427       <span class="keywordflow">else</span>
<a name="l04428"></a>04428       {
<a name="l04429"></a>04429         <span class="comment">/* enable */</span>
<a name="l04430"></a>04430         <a class="code" href="u8glib__ex_8h.html#ab23512398e22c34ec912a3f2bf86234d">u8g_com_arduino_digital_write</a>(u8g, <a class="code" href="u8glib__ex_8h.html#a204d15080393ba561cf64aea48892c9c">U8G_PI_SCK</a>, LOW);
<a name="l04431"></a>04431         <a class="code" href="u8glib__ex_8h.html#ab23512398e22c34ec912a3f2bf86234d">u8g_com_arduino_digital_write</a>(u8g, <a class="code" href="u8glib__ex_8h.html#a4fa6b381ad482e6c679f73388c28a1d3">U8G_PI_CS</a>, LOW);
<a name="l04432"></a>04432       }
<a name="l04433"></a>04433       <span class="keywordflow">break</span>;
<a name="l04434"></a>04434 
<a name="l04435"></a>04435     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#a6554b69b48d471383ab4742e0646faa7">U8G_COM_MSG_WRITE_BYTE</a>:
<a name="l04436"></a>04436       <a class="code" href="u8glib__ex_8h.html#a9976dae8754fa4909ce1ca650d8f6ff6">u8g_arduino_sw_spi_shift_out</a>(u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#ac2fece13a6875b4bb4c040c3f6f6cded">U8G_PI_MOSI</a>], u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a204d15080393ba561cf64aea48892c9c">U8G_PI_SCK</a>], arg_val);
<a name="l04437"></a>04437       <span class="keywordflow">break</span>;
<a name="l04438"></a>04438 
<a name="l04439"></a>04439     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#abee7a3415b37581dc37a340be97ecccc">U8G_COM_MSG_WRITE_SEQ</a>:
<a name="l04440"></a>04440       {
<a name="l04441"></a>04441         <span class="keyword">register</span> uint8_t *ptr = (uint8_t*)arg_ptr;
<a name="l04442"></a>04442         <span class="keywordflow">while</span>( arg_val &gt; 0 )
<a name="l04443"></a>04443         {
<a name="l04444"></a>04444           <a class="code" href="u8glib__ex_8h.html#a9976dae8754fa4909ce1ca650d8f6ff6">u8g_arduino_sw_spi_shift_out</a>(u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#ac2fece13a6875b4bb4c040c3f6f6cded">U8G_PI_MOSI</a>], u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a204d15080393ba561cf64aea48892c9c">U8G_PI_SCK</a>], *ptr++);
<a name="l04445"></a>04445           arg_val--;
<a name="l04446"></a>04446         }
<a name="l04447"></a>04447       }
<a name="l04448"></a>04448       <span class="keywordflow">break</span>;
<a name="l04449"></a>04449 
<a name="l04450"></a>04450       <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#a913bfd86af5347f33acb243e9d40743c">U8G_COM_MSG_WRITE_SEQ_P</a>:
<a name="l04451"></a>04451       {
<a name="l04452"></a>04452         <span class="keyword">register</span> uint8_t *ptr = (uint8_t*)arg_ptr;
<a name="l04453"></a>04453         <span class="keywordflow">while</span>( arg_val &gt; 0 )
<a name="l04454"></a>04454         {
<a name="l04455"></a>04455           <a class="code" href="u8glib__ex_8h.html#a9976dae8754fa4909ce1ca650d8f6ff6">u8g_arduino_sw_spi_shift_out</a>(u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#ac2fece13a6875b4bb4c040c3f6f6cded">U8G_PI_MOSI</a>], u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a204d15080393ba561cf64aea48892c9c">U8G_PI_SCK</a>], <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>(ptr));
<a name="l04456"></a>04456           ptr++;
<a name="l04457"></a>04457           arg_val--;
<a name="l04458"></a>04458         }
<a name="l04459"></a>04459       }
<a name="l04460"></a>04460       <span class="keywordflow">break</span>;
<a name="l04461"></a>04461 
<a name="l04462"></a>04462     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#a707738f973a52f84081b6e8243f24b93">U8G_COM_MSG_ADDRESS</a>:                     <span class="comment">/* define cmd (arg_val = 0) or data mode (arg_val = 1) */</span>
<a name="l04463"></a>04463       <a class="code" href="u8glib__ex_8h.html#ab23512398e22c34ec912a3f2bf86234d">u8g_com_arduino_digital_write</a>(u8g, <a class="code" href="u8glib__ex_8h.html#aa75b803d9105b2daf2fd419769510106">U8G_PI_A0</a>, arg_val);
<a name="l04464"></a>04464       <span class="keywordflow">break</span>;
<a name="l04465"></a>04465   }
<a name="l04466"></a>04466   <span class="keywordflow">return</span> 1;
<a name="l04467"></a>04467 }
<a name="l04468"></a>04468 
<a name="l04469"></a>04469 
<a name="l04470"></a>04470 <span class="comment">// ======== u8g_com_atmega_st7920_spi.c ==============</span>
<a name="l04471"></a>04471 
<a name="l04472"></a>04472 <span class="comment">/*</span>
<a name="l04473"></a>04473 <span class="comment"></span>
<a name="l04474"></a>04474 <span class="comment">  u8g_com_atmega_st7920_spi.c</span>
<a name="l04475"></a>04475 <span class="comment"></span>
<a name="l04476"></a>04476 <span class="comment">  Universal 8bit Graphics Library</span>
<a name="l04477"></a>04477 <span class="comment"></span>
<a name="l04478"></a>04478 <span class="comment">  Copyright (c) 2011, olikraus@gmail.com</span>
<a name="l04479"></a>04479 <span class="comment">  All rights reserved.</span>
<a name="l04480"></a>04480 <span class="comment"></span>
<a name="l04481"></a>04481 <span class="comment">  Redistribution and use in source and binary forms, with or without modification,</span>
<a name="l04482"></a>04482 <span class="comment">  are permitted provided that the following conditions are met:</span>
<a name="l04483"></a>04483 <span class="comment"></span>
<a name="l04484"></a>04484 <span class="comment">  * Redistributions of source code must retain the above copyright notice, this list</span>
<a name="l04485"></a>04485 <span class="comment">    of conditions and the following disclaimer.</span>
<a name="l04486"></a>04486 <span class="comment"></span>
<a name="l04487"></a>04487 <span class="comment">  * Redistributions in binary form must reproduce the above copyright notice, this</span>
<a name="l04488"></a>04488 <span class="comment">    list of conditions and the following disclaimer in the documentation and/or other</span>
<a name="l04489"></a>04489 <span class="comment">    materials provided with the distribution.</span>
<a name="l04490"></a>04490 <span class="comment"></span>
<a name="l04491"></a>04491 <span class="comment">  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND</span>
<a name="l04492"></a>04492 <span class="comment">  CONTRIBUTORS &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES,</span>
<a name="l04493"></a>04493 <span class="comment">  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF</span>
<a name="l04494"></a>04494 <span class="comment">  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span>
<a name="l04495"></a>04495 <span class="comment">  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR</span>
<a name="l04496"></a>04496 <span class="comment">  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</span>
<a name="l04497"></a>04497 <span class="comment">  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT</span>
<a name="l04498"></a>04498 <span class="comment">  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span>
<a name="l04499"></a>04499 <span class="comment">  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span>
<a name="l04500"></a>04500 <span class="comment">  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,</span>
<a name="l04501"></a>04501 <span class="comment">  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span>
<a name="l04502"></a>04502 <span class="comment">  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF</span>
<a name="l04503"></a>04503 <span class="comment">  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span>
<a name="l04504"></a>04504 <span class="comment"></span>
<a name="l04505"></a>04505 <span class="comment">  A special SPI interface for ST7920 controller</span>
<a name="l04506"></a>04506 <span class="comment"></span>
<a name="l04507"></a>04507 <span class="comment">*/</span>
<a name="l04508"></a>04508 
<a name="l04509"></a>04509 <span class="preprocessor">#if defined(__AVR__)</span>
<a name="l04510"></a>04510 <span class="preprocessor"></span>
<a name="l04511"></a>04511 <span class="keyword">static</span> <span class="keywordtype">void</span> u8g_atmega_st7920_sw_spi_shift_out(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t val) <a class="code" href="u8glib__ex_8h.html#a4bae67fd4823619e3aa810feaf68e93b">U8G_NOINLINE</a>;
<a name="l04512"></a>04512 <span class="keyword">static</span> <span class="keywordtype">void</span> u8g_atmega_st7920_sw_spi_shift_out(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t val)
<a name="l04513"></a>04513 {
<a name="l04514"></a>04514   uint8_t i = 8;
<a name="l04515"></a>04515   <span class="keywordflow">do</span>
<a name="l04516"></a>04516   {
<a name="l04517"></a>04517     <a class="code" href="u8glib__ex_8h.html#a468fe1e27ef26ec6780fa2e5b5159a72">u8g_SetPILevel</a>(u8g, <a class="code" href="u8glib__ex_8h.html#ac2fece13a6875b4bb4c040c3f6f6cded">U8G_PI_MOSI</a>, val &amp; 128 );
<a name="l04518"></a>04518     val &lt;&lt;= 1;
<a name="l04519"></a>04519     <a class="code" href="u8glib__ex_8h.html#a468fe1e27ef26ec6780fa2e5b5159a72">u8g_SetPILevel</a>(u8g, <a class="code" href="u8glib__ex_8h.html#a204d15080393ba561cf64aea48892c9c">U8G_PI_SCK</a>, 1 );
<a name="l04520"></a>04520     <a class="code" href="u8glib__ex_8h.html#a1920961449fcdb3579c6c7e3d6e41877">u8g_MicroDelay</a>();           <span class="comment">/* 15 Aug 2012: added for high speed uC */</span>
<a name="l04521"></a>04521     <a class="code" href="u8glib__ex_8h.html#a468fe1e27ef26ec6780fa2e5b5159a72">u8g_SetPILevel</a>(u8g, <a class="code" href="u8glib__ex_8h.html#a204d15080393ba561cf64aea48892c9c">U8G_PI_SCK</a>, 0 );
<a name="l04522"></a>04522     <a class="code" href="u8glib__ex_8h.html#a1920961449fcdb3579c6c7e3d6e41877">u8g_MicroDelay</a>();           <span class="comment">/* 15 Aug 2012: added for high speed uC */</span>
<a name="l04523"></a>04523     i--;
<a name="l04524"></a>04524   } <span class="keywordflow">while</span>( i != 0 );
<a name="l04525"></a>04525 }
<a name="l04526"></a>04526 
<a name="l04527"></a>04527 <span class="keyword">static</span> <span class="keywordtype">void</span> u8g_com_atmega_st7920_write_byte(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t rs, uint8_t val) <a class="code" href="u8glib__ex_8h.html#a4bae67fd4823619e3aa810feaf68e93b">U8G_NOINLINE</a>;
<a name="l04528"></a>04528 <span class="keyword">static</span> <span class="keywordtype">void</span> u8g_com_atmega_st7920_write_byte(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t rs, uint8_t val)
<a name="l04529"></a>04529 {
<a name="l04530"></a>04530   uint8_t i;
<a name="l04531"></a>04531 
<a name="l04532"></a>04532   <span class="keywordflow">if</span> ( rs == 0 )
<a name="l04533"></a>04533   {
<a name="l04534"></a>04534     <span class="comment">/* command */</span>
<a name="l04535"></a>04535     u8g_atmega_st7920_sw_spi_shift_out(u8g, 0x0f8);
<a name="l04536"></a>04536   }
<a name="l04537"></a>04537   <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( rs == 1 )
<a name="l04538"></a>04538   {
<a name="l04539"></a>04539     <span class="comment">/* data */</span>
<a name="l04540"></a>04540     u8g_atmega_st7920_sw_spi_shift_out(u8g, 0x0fa);
<a name="l04541"></a>04541   }
<a name="l04542"></a>04542 
<a name="l04543"></a>04543   u8g_atmega_st7920_sw_spi_shift_out(u8g, val &amp; 0x0f0);
<a name="l04544"></a>04544   u8g_atmega_st7920_sw_spi_shift_out(u8g, val &lt;&lt; 4);
<a name="l04545"></a>04545 
<a name="l04546"></a>04546   <span class="keywordflow">for</span>( i = 0; i &lt; 4; i++ )
<a name="l04547"></a>04547     <a class="code" href="u8glib__ex_8h.html#ad7fff136315eef65dcb8939cfaf7b30e">u8g_10MicroDelay</a>();
<a name="l04548"></a>04548 }
<a name="l04549"></a>04549 
<a name="l04550"></a>04550 
<a name="l04551"></a>04551 uint8_t <a class="code" href="u8glib__ex_8h.html#a942cbf5ff3b7d7c63ddc07c195369fa1">u8g_com_atmega_st7920_sw_spi_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t msg, uint8_t arg_val, <span class="keywordtype">void</span> *arg_ptr)
<a name="l04552"></a>04552 {
<a name="l04553"></a>04553   <span class="keywordflow">switch</span>(msg)
<a name="l04554"></a>04554   {
<a name="l04555"></a>04555     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#a4c4b2a86756c48511ee2d80fdce8fdc1">U8G_COM_MSG_INIT</a>:
<a name="l04556"></a>04556       <a class="code" href="u8glib__ex_8h.html#ab4d6e0d0d2c03b671af52f24436c65bd">u8g_SetPIOutput</a>(u8g, <a class="code" href="u8glib__ex_8h.html#a204d15080393ba561cf64aea48892c9c">U8G_PI_SCK</a>);
<a name="l04557"></a>04557       <a class="code" href="u8glib__ex_8h.html#ab4d6e0d0d2c03b671af52f24436c65bd">u8g_SetPIOutput</a>(u8g, <a class="code" href="u8glib__ex_8h.html#ac2fece13a6875b4bb4c040c3f6f6cded">U8G_PI_MOSI</a>);
<a name="l04558"></a>04558       <span class="comment">/* u8g_SetPIOutput(u8g, U8G_PI_A0); */</span>
<a name="l04559"></a>04559       <a class="code" href="u8glib__ex_8h.html#ab4d6e0d0d2c03b671af52f24436c65bd">u8g_SetPIOutput</a>(u8g, <a class="code" href="u8glib__ex_8h.html#a4fa6b381ad482e6c679f73388c28a1d3">U8G_PI_CS</a>);
<a name="l04560"></a>04560       <a class="code" href="u8glib__ex_8h.html#ab4d6e0d0d2c03b671af52f24436c65bd">u8g_SetPIOutput</a>(u8g, <a class="code" href="u8glib__ex_8h.html#ac45f46016ed7f6fbd43ec109db4b14f6">U8G_PI_RESET</a>);
<a name="l04561"></a>04561 
<a name="l04562"></a>04562       <a class="code" href="u8glib__ex_8h.html#a468fe1e27ef26ec6780fa2e5b5159a72">u8g_SetPILevel</a>(u8g, <a class="code" href="u8glib__ex_8h.html#a204d15080393ba561cf64aea48892c9c">U8G_PI_SCK</a>, 0 );
<a name="l04563"></a>04563       <a class="code" href="u8glib__ex_8h.html#a468fe1e27ef26ec6780fa2e5b5159a72">u8g_SetPILevel</a>(u8g, <a class="code" href="u8glib__ex_8h.html#ac2fece13a6875b4bb4c040c3f6f6cded">U8G_PI_MOSI</a>, 0 );
<a name="l04564"></a>04564       <a class="code" href="u8glib__ex_8h.html#a468fe1e27ef26ec6780fa2e5b5159a72">u8g_SetPILevel</a>(u8g, <a class="code" href="u8glib__ex_8h.html#a4fa6b381ad482e6c679f73388c28a1d3">U8G_PI_CS</a>, 0 );
<a name="l04565"></a>04565       <span class="comment">/* u8g_SetPILevel(u8g, U8G_PI_A0, 0); */</span>
<a name="l04566"></a>04566 
<a name="l04567"></a>04567       u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a7d70a99410516bad7b6c3c6d1a9e45e6">U8G_PI_A0_STATE</a>] = 0;       <span class="comment">/* inital RS state: command mode */</span>
<a name="l04568"></a>04568       <span class="keywordflow">break</span>;
<a name="l04569"></a>04569 
<a name="l04570"></a>04570     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#a225a41aaa3afd074315faf810d8c72b7">U8G_COM_MSG_STOP</a>:
<a name="l04571"></a>04571       <span class="keywordflow">break</span>;
<a name="l04572"></a>04572 
<a name="l04573"></a>04573     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#ae9e98c1cadea862056b3684ea79626c7">U8G_COM_MSG_RESET</a>:
<a name="l04574"></a>04574       <a class="code" href="u8glib__ex_8h.html#a468fe1e27ef26ec6780fa2e5b5159a72">u8g_SetPILevel</a>(u8g, <a class="code" href="u8glib__ex_8h.html#ac45f46016ed7f6fbd43ec109db4b14f6">U8G_PI_RESET</a>, arg_val);
<a name="l04575"></a>04575       <span class="keywordflow">break</span>;
<a name="l04576"></a>04576 
<a name="l04577"></a>04577     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#a707738f973a52f84081b6e8243f24b93">U8G_COM_MSG_ADDRESS</a>:                     <span class="comment">/* define cmd (arg_val = 0) or data mode (arg_val = 1) */</span>
<a name="l04578"></a>04578       u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a7d70a99410516bad7b6c3c6d1a9e45e6">U8G_PI_A0_STATE</a>] = arg_val;
<a name="l04579"></a>04579       <span class="keywordflow">break</span>;
<a name="l04580"></a>04580 
<a name="l04581"></a>04581     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#ac5b6ded098abcb5de9ab579c2c278dec">U8G_COM_MSG_CHIP_SELECT</a>:
<a name="l04582"></a>04582       <span class="keywordflow">if</span> ( arg_val == 0 )
<a name="l04583"></a>04583       {
<a name="l04584"></a>04584         <span class="comment">/* disable, note: the st7920 has an active high chip select */</span>
<a name="l04585"></a>04585         <a class="code" href="u8glib__ex_8h.html#a468fe1e27ef26ec6780fa2e5b5159a72">u8g_SetPILevel</a>(u8g, <a class="code" href="u8glib__ex_8h.html#a4fa6b381ad482e6c679f73388c28a1d3">U8G_PI_CS</a>, 0);
<a name="l04586"></a>04586       }
<a name="l04587"></a>04587       <span class="keywordflow">else</span>
<a name="l04588"></a>04588       {
<a name="l04589"></a>04589         <span class="comment">/* u8g_SetPILevel(u8g, U8G_PI_SCK, 0 ); */</span>
<a name="l04590"></a>04590         <span class="comment">/* enable */</span>
<a name="l04591"></a>04591         <a class="code" href="u8glib__ex_8h.html#a468fe1e27ef26ec6780fa2e5b5159a72">u8g_SetPILevel</a>(u8g, <a class="code" href="u8glib__ex_8h.html#a4fa6b381ad482e6c679f73388c28a1d3">U8G_PI_CS</a>, 1); <span class="comment">/* CS = 1 (high active) */</span>
<a name="l04592"></a>04592       }
<a name="l04593"></a>04593       <span class="keywordflow">break</span>;
<a name="l04594"></a>04594 
<a name="l04595"></a>04595 
<a name="l04596"></a>04596     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#a6554b69b48d471383ab4742e0646faa7">U8G_COM_MSG_WRITE_BYTE</a>:
<a name="l04597"></a>04597       u8g_com_atmega_st7920_write_byte(u8g, u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a7d70a99410516bad7b6c3c6d1a9e45e6">U8G_PI_A0_STATE</a>], arg_val);
<a name="l04598"></a>04598       u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a7d70a99410516bad7b6c3c6d1a9e45e6">U8G_PI_A0_STATE</a>] = 2;
<a name="l04599"></a>04599       <span class="keywordflow">break</span>;
<a name="l04600"></a>04600 
<a name="l04601"></a>04601     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#abee7a3415b37581dc37a340be97ecccc">U8G_COM_MSG_WRITE_SEQ</a>:
<a name="l04602"></a>04602       {
<a name="l04603"></a>04603         <span class="keyword">register</span> uint8_t *ptr = (uint8_t*)arg_ptr;
<a name="l04604"></a>04604         <span class="keywordflow">while</span>( arg_val &gt; 0 )
<a name="l04605"></a>04605         {
<a name="l04606"></a>04606           u8g_com_atmega_st7920_write_byte(u8g, u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a7d70a99410516bad7b6c3c6d1a9e45e6">U8G_PI_A0_STATE</a>], *ptr++);
<a name="l04607"></a>04607           u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a7d70a99410516bad7b6c3c6d1a9e45e6">U8G_PI_A0_STATE</a>] = 2;
<a name="l04608"></a>04608           arg_val--;
<a name="l04609"></a>04609         }
<a name="l04610"></a>04610       }
<a name="l04611"></a>04611       <span class="keywordflow">break</span>;
<a name="l04612"></a>04612 
<a name="l04613"></a>04613       <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#a913bfd86af5347f33acb243e9d40743c">U8G_COM_MSG_WRITE_SEQ_P</a>:
<a name="l04614"></a>04614       {
<a name="l04615"></a>04615         <span class="keyword">register</span> uint8_t *ptr = (uint8_t*)arg_ptr;
<a name="l04616"></a>04616         <span class="keywordflow">while</span>( arg_val &gt; 0 )
<a name="l04617"></a>04617         {
<a name="l04618"></a>04618           u8g_com_atmega_st7920_write_byte(u8g, u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a7d70a99410516bad7b6c3c6d1a9e45e6">U8G_PI_A0_STATE</a>], <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>(ptr));
<a name="l04619"></a>04619           u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a7d70a99410516bad7b6c3c6d1a9e45e6">U8G_PI_A0_STATE</a>] = 2;
<a name="l04620"></a>04620           ptr++;
<a name="l04621"></a>04621           arg_val--;
<a name="l04622"></a>04622         }
<a name="l04623"></a>04623       }
<a name="l04624"></a>04624       <span class="keywordflow">break</span>;
<a name="l04625"></a>04625   }
<a name="l04626"></a>04626   <span class="keywordflow">return</span> 1;
<a name="l04627"></a>04627 }
<a name="l04628"></a>04628 
<a name="l04629"></a>04629 <span class="preprocessor">#else</span>
<a name="l04630"></a>04630 <span class="preprocessor"></span>
<a name="l04631"></a>04631 
<a name="l04632"></a><a class="code" href="u8glib__ex_8h.html#a942cbf5ff3b7d7c63ddc07c195369fa1">04632</a> uint8_t <a class="code" href="u8glib__ex_8h.html#a942cbf5ff3b7d7c63ddc07c195369fa1">u8g_com_atmega_st7920_sw_spi_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t msg, uint8_t arg_val, <span class="keywordtype">void</span> *arg_ptr)
<a name="l04633"></a>04633 {
<a name="l04634"></a>04634   <span class="keywordflow">return</span> 1;
<a name="l04635"></a>04635 }
<a name="l04636"></a>04636 
<a name="l04637"></a>04637 
<a name="l04638"></a>04638 <span class="preprocessor">#endif</span>
<a name="l04639"></a>04639 <span class="preprocessor"></span>
<a name="l04640"></a>04640 <span class="comment">// ================ u8g_butmap.c ===============</span>
<a name="l04641"></a>04641 
<a name="l04642"></a>04642 <span class="comment">/*</span>
<a name="l04643"></a>04643 <span class="comment"></span>
<a name="l04644"></a>04644 <span class="comment">  u8g_bitmap.c</span>
<a name="l04645"></a>04645 <span class="comment"></span>
<a name="l04646"></a>04646 <span class="comment">  Universal 8bit Graphics Library</span>
<a name="l04647"></a>04647 <span class="comment"></span>
<a name="l04648"></a>04648 <span class="comment">  Copyright (c) 2011, olikraus@gmail.com</span>
<a name="l04649"></a>04649 <span class="comment">  All rights reserved.</span>
<a name="l04650"></a>04650 <span class="comment"></span>
<a name="l04651"></a>04651 <span class="comment">  Redistribution and use in source and binary forms, with or without modification,</span>
<a name="l04652"></a>04652 <span class="comment">  are permitted provided that the following conditions are met:</span>
<a name="l04653"></a>04653 <span class="comment"></span>
<a name="l04654"></a>04654 <span class="comment">  * Redistributions of source code must retain the above copyright notice, this list</span>
<a name="l04655"></a>04655 <span class="comment">    of conditions and the following disclaimer.</span>
<a name="l04656"></a>04656 <span class="comment"></span>
<a name="l04657"></a>04657 <span class="comment">  * Redistributions in binary form must reproduce the above copyright notice, this</span>
<a name="l04658"></a>04658 <span class="comment">    list of conditions and the following disclaimer in the documentation and/or other</span>
<a name="l04659"></a>04659 <span class="comment">    materials provided with the distribution.</span>
<a name="l04660"></a>04660 <span class="comment"></span>
<a name="l04661"></a>04661 <span class="comment">  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND</span>
<a name="l04662"></a>04662 <span class="comment">  CONTRIBUTORS &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES,</span>
<a name="l04663"></a>04663 <span class="comment">  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF</span>
<a name="l04664"></a>04664 <span class="comment">  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span>
<a name="l04665"></a>04665 <span class="comment">  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR</span>
<a name="l04666"></a>04666 <span class="comment">  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</span>
<a name="l04667"></a>04667 <span class="comment">  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT</span>
<a name="l04668"></a>04668 <span class="comment">  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span>
<a name="l04669"></a>04669 <span class="comment">  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span>
<a name="l04670"></a>04670 <span class="comment">  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,</span>
<a name="l04671"></a>04671 <span class="comment">  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span>
<a name="l04672"></a>04672 <span class="comment">  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF</span>
<a name="l04673"></a>04673 <span class="comment">  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span>
<a name="l04674"></a>04674 <span class="comment"></span>
<a name="l04675"></a>04675 <span class="comment"></span>
<a name="l04676"></a>04676 <span class="comment">*/</span>
<a name="l04677"></a>04677 
<a name="l04678"></a>04678 
<a name="l04679"></a><a class="code" href="u8glib__ex_8h.html#a4235589018f862b762d61df1665ec45c">04679</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a4235589018f862b762d61df1665ec45c">u8g_DrawHBitmap</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, <span class="keyword">const</span> uint8_t *bitmap)
<a name="l04680"></a>04680 {
<a name="l04681"></a>04681   <span class="keywordflow">while</span>( cnt &gt; 0 )
<a name="l04682"></a>04682   {
<a name="l04683"></a>04683     <a class="code" href="u8glib__ex_8h.html#a541bde03a368db9b3bd043ce96100133">u8g_Draw8Pixel</a>(u8g, x, y, 0, *bitmap);
<a name="l04684"></a>04684     bitmap++;
<a name="l04685"></a>04685     cnt--;
<a name="l04686"></a>04686     x+=8;
<a name="l04687"></a>04687   }
<a name="l04688"></a>04688 }
<a name="l04689"></a>04689 
<a name="l04690"></a><a class="code" href="u8glib__ex_8h.html#accd306d6742d4ffa904d4badf701966e">04690</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#accd306d6742d4ffa904d4badf701966e">u8g_DrawBitmap</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, u8g_uint_t h, <span class="keyword">const</span> uint8_t *bitmap)
<a name="l04691"></a>04691 {
<a name="l04692"></a>04692   <span class="keywordflow">if</span> ( <a class="code" href="u8glib__ex_8h.html#a4ed53b97d1b77b8ecaff352f5b1c6161">u8g_IsBBXIntersection</a>(u8g, x, y, cnt*8, h) == 0 )
<a name="l04693"></a>04693     <span class="keywordflow">return</span>;
<a name="l04694"></a>04694   <span class="keywordflow">while</span>( h &gt; 0 )
<a name="l04695"></a>04695   {
<a name="l04696"></a>04696     <a class="code" href="u8glib__ex_8h.html#a4235589018f862b762d61df1665ec45c">u8g_DrawHBitmap</a>(u8g, x, y, cnt, bitmap);
<a name="l04697"></a>04697     bitmap += cnt;
<a name="l04698"></a>04698     y++;
<a name="l04699"></a>04699     h--;
<a name="l04700"></a>04700   }
<a name="l04701"></a>04701 }
<a name="l04702"></a>04702 
<a name="l04703"></a>04703 
<a name="l04704"></a><a class="code" href="u8glib__ex_8h.html#aa849582e94878b370c82fca8999cce10">04704</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#aa849582e94878b370c82fca8999cce10">u8g_DrawHBitmapP</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, <span class="keyword">const</span> u8g_pgm_uint8_t *bitmap)
<a name="l04705"></a>04705 {
<a name="l04706"></a>04706   <span class="keywordflow">while</span>( cnt &gt; 0 )
<a name="l04707"></a>04707   {
<a name="l04708"></a>04708     <a class="code" href="u8glib__ex_8h.html#a541bde03a368db9b3bd043ce96100133">u8g_Draw8Pixel</a>(u8g, x, y, 0, <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>(bitmap));
<a name="l04709"></a>04709     bitmap++;
<a name="l04710"></a>04710     cnt--;
<a name="l04711"></a>04711     x+=8;
<a name="l04712"></a>04712   }
<a name="l04713"></a>04713 }
<a name="l04714"></a>04714 
<a name="l04715"></a><a class="code" href="u8glib__ex_8h.html#a98d974acd2f313542531b3fb72808912">04715</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a98d974acd2f313542531b3fb72808912">u8g_DrawBitmapP</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t cnt, u8g_uint_t h, <span class="keyword">const</span> u8g_pgm_uint8_t *bitmap)
<a name="l04716"></a>04716 {
<a name="l04717"></a>04717   <span class="keywordflow">if</span> ( <a class="code" href="u8glib__ex_8h.html#a4ed53b97d1b77b8ecaff352f5b1c6161">u8g_IsBBXIntersection</a>(u8g, x, y, cnt*8, h) == 0 )
<a name="l04718"></a>04718     <span class="keywordflow">return</span>;
<a name="l04719"></a>04719   <span class="keywordflow">while</span>( h &gt; 0 )
<a name="l04720"></a>04720   {
<a name="l04721"></a>04721     <a class="code" href="u8glib__ex_8h.html#aa849582e94878b370c82fca8999cce10">u8g_DrawHBitmapP</a>(u8g, x, y, cnt, bitmap);
<a name="l04722"></a>04722     bitmap += cnt;
<a name="l04723"></a>04723     y++;
<a name="l04724"></a>04724     h--;
<a name="l04725"></a>04725   }
<a name="l04726"></a>04726 }
<a name="l04727"></a>04727 
<a name="l04728"></a>04728 <span class="comment">/*=========================================================================*/</span>
<a name="l04729"></a>04729 
<a name="l04730"></a><a class="code" href="u8glib__ex_8h.html#a21a7fd3b88696b0141e86ff887ed5136">04730</a> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a21a7fd3b88696b0141e86ff887ed5136">u8g_DrawHXBM</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, <span class="keyword">const</span> uint8_t *bitmap)
<a name="l04731"></a>04731 {
<a name="l04732"></a>04732   uint8_t d;
<a name="l04733"></a>04733   x+=7;
<a name="l04734"></a>04734   <span class="keywordflow">while</span>( w &gt;= 8 )
<a name="l04735"></a>04735   {
<a name="l04736"></a>04736     <a class="code" href="u8glib__ex_8h.html#a541bde03a368db9b3bd043ce96100133">u8g_Draw8Pixel</a>(u8g, x, y, 2, *bitmap);
<a name="l04737"></a>04737     bitmap++;
<a name="l04738"></a>04738     w-= 8;
<a name="l04739"></a>04739     x+=8;
<a name="l04740"></a>04740   }
<a name="l04741"></a>04741   <span class="keywordflow">if</span> ( w &gt; 0 )
<a name="l04742"></a>04742   {
<a name="l04743"></a>04743     d = *bitmap;
<a name="l04744"></a>04744     x -= 7;
<a name="l04745"></a>04745     <span class="keywordflow">do</span>
<a name="l04746"></a>04746     {
<a name="l04747"></a>04747       <span class="keywordflow">if</span> ( d &amp; 1 )
<a name="l04748"></a>04748         <a class="code" href="u8glib__ex_8h.html#a8dc841c0eff99d60b40f01c3b48e626f">u8g_DrawPixel</a>(u8g, x, y);
<a name="l04749"></a>04749       x++;
<a name="l04750"></a>04750       w--;
<a name="l04751"></a>04751       d &gt;&gt;= 1;
<a name="l04752"></a>04752     } <span class="keywordflow">while</span> ( w &gt; 0 );
<a name="l04753"></a>04753   }
<a name="l04754"></a>04754 }
<a name="l04755"></a>04755 
<a name="l04756"></a><a class="code" href="u8glib__ex_8h.html#a285b1dbbd0081a538bd2e8bbae82c002">04756</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a285b1dbbd0081a538bd2e8bbae82c002">u8g_DrawXBM</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, <span class="keyword">const</span> uint8_t *bitmap)
<a name="l04757"></a>04757 {
<a name="l04758"></a>04758   u8g_uint_t b;
<a name="l04759"></a>04759   b = <a class="code" href="structu8g__str__size__struct.html#aea376a9f764f4a9cf33e2c9ae174001a">w</a>;
<a name="l04760"></a>04760   b += 7;
<a name="l04761"></a>04761   b &gt;&gt;= 3;
<a name="l04762"></a>04762 
<a name="l04763"></a>04763   <span class="keywordflow">if</span> ( <a class="code" href="u8glib__ex_8h.html#a4ed53b97d1b77b8ecaff352f5b1c6161">u8g_IsBBXIntersection</a>(u8g, x, y, w, h) == 0 )
<a name="l04764"></a>04764     <span class="keywordflow">return</span>;
<a name="l04765"></a>04765 
<a name="l04766"></a>04766   <span class="keywordflow">while</span>( h &gt; 0 )
<a name="l04767"></a>04767   {
<a name="l04768"></a>04768     <a class="code" href="u8glib__ex_8h.html#a21a7fd3b88696b0141e86ff887ed5136">u8g_DrawHXBM</a>(u8g, x, y, w, bitmap);
<a name="l04769"></a>04769     bitmap += b;
<a name="l04770"></a>04770     y++;
<a name="l04771"></a>04771     h--;
<a name="l04772"></a>04772   }
<a name="l04773"></a>04773 }
<a name="l04774"></a>04774 
<a name="l04775"></a><a class="code" href="u8glib__ex_8h.html#a0c76a15ba5e9ac3e7326b96eb952f205">04775</a> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a0c76a15ba5e9ac3e7326b96eb952f205">u8g_DrawHXBMP</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, <span class="keyword">const</span> u8g_pgm_uint8_t *bitmap)
<a name="l04776"></a>04776 {
<a name="l04777"></a>04777   uint8_t d;
<a name="l04778"></a>04778   x+=7;
<a name="l04779"></a>04779   <span class="keywordflow">while</span>( w &gt;= 8 )
<a name="l04780"></a>04780   {
<a name="l04781"></a>04781     <a class="code" href="u8glib__ex_8h.html#a541bde03a368db9b3bd043ce96100133">u8g_Draw8Pixel</a>(u8g, x, y, 2, <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>(bitmap));
<a name="l04782"></a>04782     bitmap++;
<a name="l04783"></a>04783     w-= 8;
<a name="l04784"></a>04784     x+=8;
<a name="l04785"></a>04785   }
<a name="l04786"></a>04786   <span class="keywordflow">if</span> ( w &gt; 0 )
<a name="l04787"></a>04787   {
<a name="l04788"></a>04788     d = <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>(bitmap);
<a name="l04789"></a>04789     x -= 7;
<a name="l04790"></a>04790     <span class="keywordflow">do</span>
<a name="l04791"></a>04791     {
<a name="l04792"></a>04792       <span class="keywordflow">if</span> ( d &amp; 1 )
<a name="l04793"></a>04793         <a class="code" href="u8glib__ex_8h.html#a8dc841c0eff99d60b40f01c3b48e626f">u8g_DrawPixel</a>(u8g, x, y);
<a name="l04794"></a>04794       x++;
<a name="l04795"></a>04795       w--;
<a name="l04796"></a>04796       d &gt;&gt;= 1;
<a name="l04797"></a>04797     } <span class="keywordflow">while</span> ( w &gt; 0 );
<a name="l04798"></a>04798   }
<a name="l04799"></a>04799 }
<a name="l04800"></a>04800 
<a name="l04801"></a><a class="code" href="u8glib__ex_8h.html#a9f120562a173995d4503aa1b2263575d">04801</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a9f120562a173995d4503aa1b2263575d">u8g_DrawXBMP</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, <span class="keyword">const</span> u8g_pgm_uint8_t *bitmap)
<a name="l04802"></a>04802 {
<a name="l04803"></a>04803   u8g_uint_t b;
<a name="l04804"></a>04804   b = <a class="code" href="structu8g__str__size__struct.html#aea376a9f764f4a9cf33e2c9ae174001a">w</a>;
<a name="l04805"></a>04805   b += 7;
<a name="l04806"></a>04806   b &gt;&gt;= 3;
<a name="l04807"></a>04807 
<a name="l04808"></a>04808   <span class="keywordflow">if</span> ( <a class="code" href="u8glib__ex_8h.html#a4ed53b97d1b77b8ecaff352f5b1c6161">u8g_IsBBXIntersection</a>(u8g, x, y, w, h) == 0 )
<a name="l04809"></a>04809     <span class="keywordflow">return</span>;
<a name="l04810"></a>04810   <span class="keywordflow">while</span>( h &gt; 0 )
<a name="l04811"></a>04811   {
<a name="l04812"></a>04812     <a class="code" href="u8glib__ex_8h.html#a0c76a15ba5e9ac3e7326b96eb952f205">u8g_DrawHXBMP</a>(u8g, x, y, w, bitmap);
<a name="l04813"></a>04813     bitmap += b;
<a name="l04814"></a>04814     y++;
<a name="l04815"></a>04815     h--;
<a name="l04816"></a>04816   }
<a name="l04817"></a>04817 }
<a name="l04818"></a>04818 
<a name="l04819"></a>04819 <span class="comment">// ============= u8g_api_ii.c ===============</span>
<a name="l04820"></a>04820 
<a name="l04821"></a>04821 <span class="comment">/*</span>
<a name="l04822"></a>04822 <span class="comment"></span>
<a name="l04823"></a>04823 <span class="comment">  u8g_ll_api.c</span>
<a name="l04824"></a>04824 <span class="comment"></span>
<a name="l04825"></a>04825 <span class="comment">  low level api</span>
<a name="l04826"></a>04826 <span class="comment"></span>
<a name="l04827"></a>04827 <span class="comment">  Universal 8bit Graphics Library</span>
<a name="l04828"></a>04828 <span class="comment"></span>
<a name="l04829"></a>04829 <span class="comment">  Copyright (c) 2011, olikraus@gmail.com</span>
<a name="l04830"></a>04830 <span class="comment">  All rights reserved.</span>
<a name="l04831"></a>04831 <span class="comment"></span>
<a name="l04832"></a>04832 <span class="comment">  Redistribution and use in source and binary forms, with or without modification,</span>
<a name="l04833"></a>04833 <span class="comment">  are permitted provided that the following conditions are met:</span>
<a name="l04834"></a>04834 <span class="comment"></span>
<a name="l04835"></a>04835 <span class="comment">  * Redistributions of source code must retain the above copyright notice, this list</span>
<a name="l04836"></a>04836 <span class="comment">    of conditions and the following disclaimer.</span>
<a name="l04837"></a>04837 <span class="comment"></span>
<a name="l04838"></a>04838 <span class="comment">  * Redistributions in binary form must reproduce the above copyright notice, this</span>
<a name="l04839"></a>04839 <span class="comment">    list of conditions and the following disclaimer in the documentation and/or other</span>
<a name="l04840"></a>04840 <span class="comment">    materials provided with the distribution.</span>
<a name="l04841"></a>04841 <span class="comment"></span>
<a name="l04842"></a>04842 <span class="comment">  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND</span>
<a name="l04843"></a>04843 <span class="comment">  CONTRIBUTORS &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES,</span>
<a name="l04844"></a>04844 <span class="comment">  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF</span>
<a name="l04845"></a>04845 <span class="comment">  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span>
<a name="l04846"></a>04846 <span class="comment">  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR</span>
<a name="l04847"></a>04847 <span class="comment">  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</span>
<a name="l04848"></a>04848 <span class="comment">  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT</span>
<a name="l04849"></a>04849 <span class="comment">  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span>
<a name="l04850"></a>04850 <span class="comment">  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span>
<a name="l04851"></a>04851 <span class="comment">  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,</span>
<a name="l04852"></a>04852 <span class="comment">  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span>
<a name="l04853"></a>04853 <span class="comment">  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF</span>
<a name="l04854"></a>04854 <span class="comment">  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span>
<a name="l04855"></a>04855 <span class="comment"></span>
<a name="l04856"></a>04856 <span class="comment"></span>
<a name="l04857"></a>04857 <span class="comment">*/</span>
<a name="l04858"></a>04858 
<a name="l04859"></a><a class="code" href="u8glib__ex_8h.html#ab0c0fd456482ffff05956cbadbe80ddf">04859</a> uint8_t <a class="code" href="u8glib__ex_8h.html#ab0c0fd456482ffff05956cbadbe80ddf">u8g_call_dev_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t msg, <span class="keywordtype">void</span> *arg)
<a name="l04860"></a>04860 {
<a name="l04861"></a>04861   <span class="keywordflow">return</span> dev-&gt;<a class="code" href="struct__u8g__dev__t.html#a57bdd37495cc8a9772412fa2344d0476">dev_fn</a>(u8g, dev, msg, arg);
<a name="l04862"></a>04862 }
<a name="l04863"></a>04863 
<a name="l04864"></a>04864 <span class="comment">/*====================================================================*/</span>
<a name="l04865"></a>04865 
<a name="l04866"></a><a class="code" href="u8glib__ex_8h.html#a4bd1fea68c63ba10b95c4791a47df667">04866</a> uint8_t <a class="code" href="u8glib__ex_8h.html#a4bd1fea68c63ba10b95c4791a47df667">u8g_InitLL</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev)
<a name="l04867"></a>04867 {
<a name="l04868"></a>04868   uint8_t r;
<a name="l04869"></a>04869   u8g-&gt;<a class="code" href="struct__u8g__t.html#a9d000643a29eef68417259ea4aa24aef">state_cb</a>(<a class="code" href="u8glib__ex_8h.html#aae53c096aba069e78b3a8baaf7d86cbe">U8G_STATE_MSG_BACKUP_ENV</a>);
<a name="l04870"></a>04870   r =  <a class="code" href="u8glib__ex_8h.html#ab0c0fd456482ffff05956cbadbe80ddf">u8g_call_dev_fn</a>(u8g, dev, <a class="code" href="u8glib__ex_8h.html#a34fd7e41b79f81e31b3149d5865d8f3d">U8G_DEV_MSG_INIT</a>, NULL);
<a name="l04871"></a>04871   u8g-&gt;<a class="code" href="struct__u8g__t.html#a9d000643a29eef68417259ea4aa24aef">state_cb</a>(<a class="code" href="u8glib__ex_8h.html#aa83792d253ddacb1b51825e110903316">U8G_STATE_MSG_BACKUP_U8G</a>);
<a name="l04872"></a>04872   u8g-&gt;<a class="code" href="struct__u8g__t.html#a9d000643a29eef68417259ea4aa24aef">state_cb</a>(<a class="code" href="u8glib__ex_8h.html#a49bf1a504de0c8bebfbdb2b115bc4b75">U8G_STATE_MSG_RESTORE_ENV</a>);
<a name="l04873"></a>04873   <span class="keywordflow">return</span> r;
<a name="l04874"></a>04874 }
<a name="l04875"></a>04875 
<a name="l04876"></a><a class="code" href="u8glib__ex_8h.html#ad1bed8da32d3147c81b3ffc03676f77b">04876</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#ad1bed8da32d3147c81b3ffc03676f77b">u8g_FirstPageLL</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev)
<a name="l04877"></a>04877 {
<a name="l04878"></a>04878   u8g-&gt;<a class="code" href="struct__u8g__t.html#a9d000643a29eef68417259ea4aa24aef">state_cb</a>(<a class="code" href="u8glib__ex_8h.html#aae53c096aba069e78b3a8baaf7d86cbe">U8G_STATE_MSG_BACKUP_ENV</a>);
<a name="l04879"></a>04879   u8g-&gt;<a class="code" href="struct__u8g__t.html#a9d000643a29eef68417259ea4aa24aef">state_cb</a>(<a class="code" href="u8glib__ex_8h.html#a4f1a8a59ef88f8235f8b8a95448321aa">U8G_STATE_MSG_RESTORE_U8G</a>);
<a name="l04880"></a>04880   <a class="code" href="u8glib__ex_8h.html#ab0c0fd456482ffff05956cbadbe80ddf">u8g_call_dev_fn</a>(u8g, dev, <a class="code" href="u8glib__ex_8h.html#a072af282af96a7c094fd6c52232c2f5e">U8G_DEV_MSG_PAGE_FIRST</a>, NULL);
<a name="l04881"></a>04881   <a class="code" href="u8glib__ex_8h.html#ab0c0fd456482ffff05956cbadbe80ddf">u8g_call_dev_fn</a>(u8g, dev, <a class="code" href="u8glib__ex_8h.html#a7ccd22af2fd9efd6a0961a979fd8a04e">U8G_DEV_MSG_GET_PAGE_BOX</a>, &amp;(u8g-&gt;<a class="code" href="struct__u8g__t.html#a894ed7c2dd9e859af28bc0c25f673fae">current_page</a>));
<a name="l04882"></a>04882   u8g-&gt;<a class="code" href="struct__u8g__t.html#a9d000643a29eef68417259ea4aa24aef">state_cb</a>(<a class="code" href="u8glib__ex_8h.html#a49bf1a504de0c8bebfbdb2b115bc4b75">U8G_STATE_MSG_RESTORE_ENV</a>);
<a name="l04883"></a>04883 }
<a name="l04884"></a>04884 
<a name="l04885"></a><a class="code" href="u8glib__ex_8h.html#a20550f4e2aabb9ac427c4997c94c5783">04885</a> uint8_t <a class="code" href="u8glib__ex_8h.html#a20550f4e2aabb9ac427c4997c94c5783">u8g_NextPageLL</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev)
<a name="l04886"></a>04886 {
<a name="l04887"></a>04887   uint8_t r;
<a name="l04888"></a>04888   u8g-&gt;<a class="code" href="struct__u8g__t.html#a9d000643a29eef68417259ea4aa24aef">state_cb</a>(<a class="code" href="u8glib__ex_8h.html#aae53c096aba069e78b3a8baaf7d86cbe">U8G_STATE_MSG_BACKUP_ENV</a>);
<a name="l04889"></a>04889   u8g-&gt;<a class="code" href="struct__u8g__t.html#a9d000643a29eef68417259ea4aa24aef">state_cb</a>(<a class="code" href="u8glib__ex_8h.html#a4f1a8a59ef88f8235f8b8a95448321aa">U8G_STATE_MSG_RESTORE_U8G</a>);
<a name="l04890"></a>04890   r = <a class="code" href="u8glib__ex_8h.html#ab0c0fd456482ffff05956cbadbe80ddf">u8g_call_dev_fn</a>(u8g, dev, <a class="code" href="u8glib__ex_8h.html#a6bd7acf17c0a8391a9ad449f72273bd6">U8G_DEV_MSG_PAGE_NEXT</a>, NULL);
<a name="l04891"></a>04891   <span class="keywordflow">if</span> ( r != 0 )
<a name="l04892"></a>04892   {
<a name="l04893"></a>04893     <a class="code" href="u8glib__ex_8h.html#ab0c0fd456482ffff05956cbadbe80ddf">u8g_call_dev_fn</a>(u8g, dev, <a class="code" href="u8glib__ex_8h.html#a7ccd22af2fd9efd6a0961a979fd8a04e">U8G_DEV_MSG_GET_PAGE_BOX</a>, &amp;(u8g-&gt;<a class="code" href="struct__u8g__t.html#a894ed7c2dd9e859af28bc0c25f673fae">current_page</a>));
<a name="l04894"></a>04894   }
<a name="l04895"></a>04895   u8g-&gt;<a class="code" href="struct__u8g__t.html#a9d000643a29eef68417259ea4aa24aef">state_cb</a>(<a class="code" href="u8glib__ex_8h.html#a49bf1a504de0c8bebfbdb2b115bc4b75">U8G_STATE_MSG_RESTORE_ENV</a>);
<a name="l04896"></a>04896   <span class="keywordflow">return</span> r;
<a name="l04897"></a>04897 }
<a name="l04898"></a>04898 
<a name="l04899"></a><a class="code" href="u8glib__ex_8h.html#ad6f2bcb2bd216ccabc35f72a64625294">04899</a> uint8_t <a class="code" href="u8glib__ex_8h.html#ad6f2bcb2bd216ccabc35f72a64625294">u8g_SetContrastLL</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t contrast)
<a name="l04900"></a>04900 {
<a name="l04901"></a>04901   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#ab0c0fd456482ffff05956cbadbe80ddf">u8g_call_dev_fn</a>(u8g, dev, <a class="code" href="u8glib__ex_8h.html#a7980ce28b30e89b42c60cf26f3703e35">U8G_DEV_MSG_CONTRAST</a>, &amp;contrast);
<a name="l04902"></a>04902 }
<a name="l04903"></a>04903 
<a name="l04904"></a><a class="code" href="u8glib__ex_8h.html#adae0bf770f21ccdc411e8eb48109f873">04904</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#adae0bf770f21ccdc411e8eb48109f873">u8g_DrawPixelLL</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, u8g_uint_t x, u8g_uint_t y)
<a name="l04905"></a>04905 {
<a name="l04906"></a>04906   <a class="code" href="struct__u8g__dev__arg__pixel__t.html">u8g_dev_arg_pixel_t</a> *arg = &amp;(u8g-&gt;<a class="code" href="struct__u8g__t.html#adea2457d691fd14b5f647aeedeef955b">arg_pixel</a>);
<a name="l04907"></a>04907   arg-&gt;<a class="code" href="struct__u8g__dev__arg__pixel__t.html#a0bd126a4a84709451f22abb1c7c704d0">x</a> = <a class="code" href="structu8g__str__size__struct.html#a3ed6e6c91c0b672a428f3f627dfd148b">x</a>;
<a name="l04908"></a>04908   arg-&gt;<a class="code" href="struct__u8g__dev__arg__pixel__t.html#a14d91862d05b147bd3ddaa61dec19f21">y</a> = <a class="code" href="structu8g__str__size__struct.html#aa8648aa0bb6df77525620af6fcb214cf">y</a>;
<a name="l04909"></a>04909   <a class="code" href="u8glib__ex_8h.html#ab0c0fd456482ffff05956cbadbe80ddf">u8g_call_dev_fn</a>(u8g, dev, <a class="code" href="u8glib__ex_8h.html#ae439ba8e396e0254d341662235de53ac">U8G_DEV_MSG_SET_PIXEL</a>, arg);
<a name="l04910"></a>04910 }
<a name="l04911"></a>04911 
<a name="l04912"></a><a class="code" href="u8glib__ex_8h.html#abeb307b1a4fe97b24679e9330eb2f841">04912</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#abeb307b1a4fe97b24679e9330eb2f841">u8g_Draw8PixelLL</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel)
<a name="l04913"></a>04913 {
<a name="l04914"></a>04914   <a class="code" href="struct__u8g__dev__arg__pixel__t.html">u8g_dev_arg_pixel_t</a> *arg = &amp;(u8g-&gt;<a class="code" href="struct__u8g__t.html#adea2457d691fd14b5f647aeedeef955b">arg_pixel</a>);
<a name="l04915"></a>04915   arg-&gt;<a class="code" href="struct__u8g__dev__arg__pixel__t.html#a0bd126a4a84709451f22abb1c7c704d0">x</a> = <a class="code" href="structu8g__str__size__struct.html#a3ed6e6c91c0b672a428f3f627dfd148b">x</a>;
<a name="l04916"></a>04916   arg-&gt;<a class="code" href="struct__u8g__dev__arg__pixel__t.html#a14d91862d05b147bd3ddaa61dec19f21">y</a> = <a class="code" href="structu8g__str__size__struct.html#aa8648aa0bb6df77525620af6fcb214cf">y</a>;
<a name="l04917"></a>04917   arg-&gt;<a class="code" href="struct__u8g__dev__arg__pixel__t.html#a92abda0bec7c1c978fe96f87aad18067">dir</a> = dir;
<a name="l04918"></a>04918   arg-&gt;<a class="code" href="struct__u8g__dev__arg__pixel__t.html#a03ae8f6034c643489417f0a12a95966d">pixel</a> = pixel;
<a name="l04919"></a>04919   <a class="code" href="u8glib__ex_8h.html#ab0c0fd456482ffff05956cbadbe80ddf">u8g_call_dev_fn</a>(u8g, dev, <a class="code" href="u8glib__ex_8h.html#a23e74f1821719a43a7fc520a2f1b15c6">U8G_DEV_MSG_SET_8PIXEL</a>, arg);
<a name="l04920"></a>04920 }
<a name="l04921"></a>04921 
<a name="l04922"></a><a class="code" href="u8glib__ex_8h.html#a6a43acba15120a8dcae6292c563b88ee">04922</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a6a43acba15120a8dcae6292c563b88ee">u8g_Draw4TPixelLL</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel)
<a name="l04923"></a>04923 {
<a name="l04924"></a>04924   <a class="code" href="struct__u8g__dev__arg__pixel__t.html">u8g_dev_arg_pixel_t</a> *arg = &amp;(u8g-&gt;<a class="code" href="struct__u8g__t.html#adea2457d691fd14b5f647aeedeef955b">arg_pixel</a>);
<a name="l04925"></a>04925   arg-&gt;<a class="code" href="struct__u8g__dev__arg__pixel__t.html#a0bd126a4a84709451f22abb1c7c704d0">x</a> = <a class="code" href="structu8g__str__size__struct.html#a3ed6e6c91c0b672a428f3f627dfd148b">x</a>;
<a name="l04926"></a>04926   arg-&gt;<a class="code" href="struct__u8g__dev__arg__pixel__t.html#a14d91862d05b147bd3ddaa61dec19f21">y</a> = <a class="code" href="structu8g__str__size__struct.html#aa8648aa0bb6df77525620af6fcb214cf">y</a>;
<a name="l04927"></a>04927   arg-&gt;<a class="code" href="struct__u8g__dev__arg__pixel__t.html#a92abda0bec7c1c978fe96f87aad18067">dir</a> = dir;
<a name="l04928"></a>04928   arg-&gt;<a class="code" href="struct__u8g__dev__arg__pixel__t.html#a03ae8f6034c643489417f0a12a95966d">pixel</a> = pixel;
<a name="l04929"></a>04929   <a class="code" href="u8glib__ex_8h.html#ab0c0fd456482ffff05956cbadbe80ddf">u8g_call_dev_fn</a>(u8g, dev, <a class="code" href="u8glib__ex_8h.html#ac1b6b4c2bf23a0ec66a34c5e3e3362a5">U8G_DEV_MSG_SET_4TPIXEL</a>, arg);
<a name="l04930"></a>04930 }
<a name="l04931"></a>04931 
<a name="l04932"></a>04932 
<a name="l04933"></a>04933 <span class="preprocessor">#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION</span>
<a name="l04934"></a>04934 <span class="preprocessor"></span>uint8_t <a class="code" href="u8glib__ex_8h.html#ab23d6dee11a4debd09bbdfa73e7bd927">u8g_IsBBXIntersectionLL</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h)
<a name="l04935"></a>04935 {
<a name="l04936"></a>04936   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#ab0c0fd456482ffff05956cbadbe80ddf">u8g_call_dev_fn</a>(u8g, dev, U8G_DEV_MSG_IS_BBX_INTERSECTION, &amp;arg);
<a name="l04937"></a>04937 }
<a name="l04938"></a>04938 <span class="preprocessor">#endif</span>
<a name="l04939"></a>04939 <span class="preprocessor"></span>
<a name="l04940"></a>04940 
<a name="l04941"></a>04941 
<a name="l04942"></a><a class="code" href="u8glib__ex_8h.html#a305b71b05558c5edaaaa7572b6bb4d61">04942</a> u8g_uint_t <a class="code" href="u8glib__ex_8h.html#a305b71b05558c5edaaaa7572b6bb4d61">u8g_GetWidthLL</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev)
<a name="l04943"></a>04943 {
<a name="l04944"></a>04944   u8g_uint_t r;
<a name="l04945"></a>04945   <a class="code" href="u8glib__ex_8h.html#ab0c0fd456482ffff05956cbadbe80ddf">u8g_call_dev_fn</a>(u8g, dev, <a class="code" href="u8glib__ex_8h.html#abae9d4c5dd2273490e5d6fb316ad5a02">U8G_DEV_MSG_GET_WIDTH</a>, &amp;r);
<a name="l04946"></a>04946   <span class="keywordflow">return</span> r;
<a name="l04947"></a>04947 }
<a name="l04948"></a>04948 
<a name="l04949"></a><a class="code" href="u8glib__ex_8h.html#ad300bdf302e2b1e8179da1e18b8e2917">04949</a> u8g_uint_t <a class="code" href="u8glib__ex_8h.html#ad300bdf302e2b1e8179da1e18b8e2917">u8g_GetHeightLL</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev)
<a name="l04950"></a>04950 {
<a name="l04951"></a>04951   u8g_uint_t r;
<a name="l04952"></a>04952   <a class="code" href="u8glib__ex_8h.html#ab0c0fd456482ffff05956cbadbe80ddf">u8g_call_dev_fn</a>(u8g, dev, <a class="code" href="u8glib__ex_8h.html#a601f8b6a720ab1530e0759186803f249">U8G_DEV_MSG_GET_HEIGHT</a>, &amp;r);
<a name="l04953"></a>04953   <span class="keywordflow">return</span> r;
<a name="l04954"></a>04954 }
<a name="l04955"></a>04955 
<a name="l04956"></a><a class="code" href="u8glib__ex_8h.html#ac176cbafb377d29bf1dce0df2b3ddda6">04956</a> u8g_uint_t <a class="code" href="u8glib__ex_8h.html#ac176cbafb377d29bf1dce0df2b3ddda6">u8g_GetModeLL</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev)
<a name="l04957"></a>04957 {
<a name="l04958"></a>04958   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#ab0c0fd456482ffff05956cbadbe80ddf">u8g_call_dev_fn</a>(u8g, dev, <a class="code" href="u8glib__ex_8h.html#aefd09b54d90de3a2116639518f8d8272">U8G_DEV_MSG_GET_MODE</a>, NULL);
<a name="l04959"></a>04959 }
<a name="l04960"></a>04960 
<a name="l04961"></a>04961 
<a name="l04962"></a>04962 
<a name="l04963"></a>04963 <span class="comment">/*====================================================================*/</span>
<a name="l04964"></a>04964 
<a name="l04965"></a><a class="code" href="u8glib__ex_8h.html#ad458f824f71183b72ad9fbf311e54fca">04965</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#ad458f824f71183b72ad9fbf311e54fca">u8g_UpdateDimension</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g)
<a name="l04966"></a>04966 {
<a name="l04967"></a>04967   u8g-&gt;<a class="code" href="struct__u8g__t.html#a12c3336a1bb53db20c777c05c17705b9">width</a> = <a class="code" href="u8glib__ex_8h.html#a305b71b05558c5edaaaa7572b6bb4d61">u8g_GetWidthLL</a>(u8g, u8g-&gt;<a class="code" href="struct__u8g__t.html#a84ad9a754cb8aceb1d79c4c2bbbbc9ee">dev</a>);
<a name="l04968"></a>04968   u8g-&gt;<a class="code" href="struct__u8g__t.html#a032e2d23ff5f2b6d23763bfe1ad4951d">height</a> = <a class="code" href="u8glib__ex_8h.html#ad300bdf302e2b1e8179da1e18b8e2917">u8g_GetHeightLL</a>(u8g, u8g-&gt;<a class="code" href="struct__u8g__t.html#a84ad9a754cb8aceb1d79c4c2bbbbc9ee">dev</a>);
<a name="l04969"></a>04969   u8g-&gt;<a class="code" href="struct__u8g__t.html#a37e90f5e3bd99fac2021fb3a326607d4">mode</a> = <a class="code" href="u8glib__ex_8h.html#ac176cbafb377d29bf1dce0df2b3ddda6">u8g_GetModeLL</a>(u8g, u8g-&gt;<a class="code" href="struct__u8g__t.html#a84ad9a754cb8aceb1d79c4c2bbbbc9ee">dev</a>);
<a name="l04970"></a>04970   <span class="comment">/* 9 Dec 2012: u8g_scale.c requires update of current page */</span>
<a name="l04971"></a>04971   <a class="code" href="u8glib__ex_8h.html#ab0c0fd456482ffff05956cbadbe80ddf">u8g_call_dev_fn</a>(u8g, u8g-&gt;<a class="code" href="struct__u8g__t.html#a84ad9a754cb8aceb1d79c4c2bbbbc9ee">dev</a>, <a class="code" href="u8glib__ex_8h.html#a7ccd22af2fd9efd6a0961a979fd8a04e">U8G_DEV_MSG_GET_PAGE_BOX</a>, &amp;(u8g-&gt;<a class="code" href="struct__u8g__t.html#a894ed7c2dd9e859af28bc0c25f673fae">current_page</a>));
<a name="l04972"></a>04972 }
<a name="l04973"></a>04973 
<a name="l04974"></a><a class="code" href="u8glib__ex_8h.html#a427c7f9f8b68f0577f63ddd4749d37b9">04974</a> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a427c7f9f8b68f0577f63ddd4749d37b9">u8g_init_data</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g)
<a name="l04975"></a>04975 {
<a name="l04976"></a>04976   u8g-&gt;<a class="code" href="struct__u8g__t.html#a098e0a80024577b9bb8644bd1fcc2aeb">font</a> = NULL;
<a name="l04977"></a>04977   u8g-&gt;<a class="code" href="struct__u8g__t.html#a7faf6471398246725292038cbfed59d3">cursor_font</a> = NULL;
<a name="l04978"></a>04978   u8g-&gt;<a class="code" href="struct__u8g__t.html#a17964be547f89c75c80f842f2d26339f">cursor_bg_color</a> = 0;
<a name="l04979"></a>04979   u8g-&gt;<a class="code" href="struct__u8g__t.html#a23ccc376a84879d472613520e36358e0">cursor_fg_color</a> = 1;
<a name="l04980"></a>04980   u8g-&gt;<a class="code" href="struct__u8g__t.html#af3de94536a3b3be064b2fef9d62cc846">cursor_encoding</a> = 34;
<a name="l04981"></a>04981   u8g-&gt;<a class="code" href="struct__u8g__t.html#a09e15890b91ffc2c929ee2ef5af11461">cursor_fn</a> = (<a class="code" href="u8glib__ex_8h.html#af8ea0e7393123d837fdcadf76c000518">u8g_draw_cursor_fn</a>)0;
<a name="l04982"></a>04982 
<a name="l04983"></a>04983 <span class="preprocessor">#if defined(U8G_WITH_PINLIST)</span>
<a name="l04984"></a>04984 <span class="preprocessor"></span>  {
<a name="l04985"></a>04985     uint8_t i;
<a name="l04986"></a>04986     <span class="keywordflow">for</span>( i = 0; i &lt; <a class="code" href="u8glib__ex_8h.html#a69ec203b2b752cafbf4abfb8eae3e2dc">U8G_PIN_LIST_LEN</a>; i++ )
<a name="l04987"></a>04987       u8g-&gt;pin_list[i] = <a class="code" href="u8glib__ex_8h.html#a95eb8a56571912e17c5f40da8a068c33">U8G_PIN_NONE</a>;
<a name="l04988"></a>04988   }
<a name="l04989"></a>04989 <span class="preprocessor">#endif</span>
<a name="l04990"></a>04990 <span class="preprocessor"></span>
<a name="l04991"></a>04991   <a class="code" href="u8glib__ex_8h.html#aefd0ab5f91aba8c61244029339961aeb">u8g_SetColorIndex</a>(u8g, 1);
<a name="l04992"></a>04992 
<a name="l04993"></a>04993   <a class="code" href="u8glib__ex_8h.html#a9c3ea72b6af49eae8f5dd98c4a581ceb">u8g_SetFontPosBaseline</a>(u8g);
<a name="l04994"></a>04994 
<a name="l04995"></a>04995   u8g-&gt;<a class="code" href="struct__u8g__t.html#a0902d0294e5df68673e5e8730295498c">font_height_mode</a> = <a class="code" href="u8glib__ex_8h.html#ac522a3ea75701a6ce493406ceb00340a">U8G_FONT_HEIGHT_MODE_XTEXT</a>;
<a name="l04996"></a>04996   u8g-&gt;<a class="code" href="struct__u8g__t.html#aa9cedcf19ccaafed19410935c5558631">font_ref_ascent</a> = 0;
<a name="l04997"></a>04997   u8g-&gt;<a class="code" href="struct__u8g__t.html#a207e0565daf3a164bdb7391c9a78d5df">font_ref_descent</a> = 0;
<a name="l04998"></a>04998   u8g-&gt;<a class="code" href="struct__u8g__t.html#af5ae7d612e35acaf1fda5e51defcf273">font_line_spacing_factor</a> = 64;           <span class="comment">/* 64 = 1.0, 77 = 1.2 line spacing factor */</span>
<a name="l04999"></a>04999   u8g-&gt;<a class="code" href="struct__u8g__t.html#a8cdcc1f0ede6015f8099c063cdd6bf40">line_spacing</a> = 0;
<a name="l05000"></a>05000 
<a name="l05001"></a>05001   u8g-&gt;<a class="code" href="struct__u8g__t.html#a9d000643a29eef68417259ea4aa24aef">state_cb</a> = <a class="code" href="u8glib__ex_8h.html#a160dbf8f8df51ce7814374229365b430">u8g_state_dummy_cb</a>;
<a name="l05002"></a>05002 
<a name="l05003"></a>05003 }
<a name="l05004"></a>05004 
<a name="l05005"></a><a class="code" href="u8glib__ex_8h.html#a926b1f3bb30fbdea20ff1195607101dd">05005</a> uint8_t <a class="code" href="u8glib__ex_8h.html#a926b1f3bb30fbdea20ff1195607101dd">u8g_Begin</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g)
<a name="l05006"></a>05006 {
<a name="l05007"></a>05007   <span class="comment">/* call and init low level driver and com device */</span>
<a name="l05008"></a>05008   <span class="keywordflow">if</span> ( <a class="code" href="u8glib__ex_8h.html#a4bd1fea68c63ba10b95c4791a47df667">u8g_InitLL</a>(u8g, u8g-&gt;<a class="code" href="struct__u8g__t.html#a84ad9a754cb8aceb1d79c4c2bbbbc9ee">dev</a>) == 0 )
<a name="l05009"></a>05009     <span class="keywordflow">return</span> 0;
<a name="l05010"></a>05010   <span class="comment">/* fetch width and height from the low level */</span>
<a name="l05011"></a>05011   <a class="code" href="u8glib__ex_8h.html#ad458f824f71183b72ad9fbf311e54fca">u8g_UpdateDimension</a>(u8g);
<a name="l05012"></a>05012   <span class="keywordflow">return</span> 1;
<a name="l05013"></a>05013 }
<a name="l05014"></a>05014 
<a name="l05015"></a><a class="code" href="u8glib__ex_8h.html#a7c8d1380a5634ca3d8b1fb22f969aaca">05015</a> uint8_t <a class="code" href="u8glib__ex_8h.html#a7c8d1380a5634ca3d8b1fb22f969aaca">u8g_Init</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev)
<a name="l05016"></a>05016 {
<a name="l05017"></a>05017   <a class="code" href="u8glib__ex_8h.html#a427c7f9f8b68f0577f63ddd4749d37b9">u8g_init_data</a>(u8g);
<a name="l05018"></a>05018   u8g-&gt;<a class="code" href="struct__u8g__t.html#a84ad9a754cb8aceb1d79c4c2bbbbc9ee">dev</a> = dev;
<a name="l05019"></a>05019 
<a name="l05020"></a>05020   <span class="comment">/* On the Arduino Environment this will lead to two calls to u8g_Begin(), the following line will be called first (by U8glib constructors) */</span>
<a name="l05021"></a>05021   <span class="comment">/* if - in future releases - this is removed, then still call u8g_UpdateDimension() */</span>
<a name="l05022"></a>05022   <span class="comment">/* if Arduino call u8g_UpdateDimension else u8g_Begin */</span>
<a name="l05023"></a>05023   <span class="comment">/* issue 146 */</span>
<a name="l05024"></a>05024   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#a926b1f3bb30fbdea20ff1195607101dd">u8g_Begin</a>(u8g);
<a name="l05025"></a>05025 }
<a name="l05026"></a>05026 
<a name="l05027"></a>05027 <span class="comment">/* special init for pure ARM systems */</span>
<a name="l05028"></a><a class="code" href="u8glib__ex_8h.html#a831dba41f473da54a23e0122fb93a64d">05028</a> uint8_t <a class="code" href="u8glib__ex_8h.html#a831dba41f473da54a23e0122fb93a64d">u8g_InitComFn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, <a class="code" href="u8glib__ex_8h.html#ae5fda0c9749774cf2dd40cb40c4e5f14">u8g_com_fnptr</a> com_fn)
<a name="l05029"></a>05029 {
<a name="l05030"></a>05030   <a class="code" href="u8glib__ex_8h.html#a427c7f9f8b68f0577f63ddd4749d37b9">u8g_init_data</a>(u8g);
<a name="l05031"></a>05031 
<a name="l05032"></a>05032 <span class="preprocessor">#if defined(U8G_WITH_PINLIST)</span>
<a name="l05033"></a>05033 <span class="preprocessor"></span>  {
<a name="l05034"></a>05034     uint8_t i;
<a name="l05035"></a>05035     <span class="keywordflow">for</span>( i = 0; i &lt; <a class="code" href="u8glib__ex_8h.html#a69ec203b2b752cafbf4abfb8eae3e2dc">U8G_PIN_LIST_LEN</a>; i++ )
<a name="l05036"></a>05036       u8g-&gt;pin_list[i] = <a class="code" href="u8glib__ex_8h.html#a05a8d0cff78bc973347421ffa1ba212d">U8G_PIN_DUMMY</a>;
<a name="l05037"></a>05037   }
<a name="l05038"></a>05038 <span class="preprocessor">#endif</span>
<a name="l05039"></a>05039 <span class="preprocessor"></span>
<a name="l05040"></a>05040   u8g-&gt;<a class="code" href="struct__u8g__t.html#a84ad9a754cb8aceb1d79c4c2bbbbc9ee">dev</a> = dev;
<a name="l05041"></a>05041 
<a name="l05042"></a>05042   <span class="comment">/* replace the device procedure with a custom communication procedure */</span>
<a name="l05043"></a>05043   u8g-&gt;<a class="code" href="struct__u8g__t.html#a84ad9a754cb8aceb1d79c4c2bbbbc9ee">dev</a>-&gt;<a class="code" href="struct__u8g__dev__t.html#a1ee078d6dfb228283ae687b6722a9ee1">com_fn</a> = com_fn;
<a name="l05044"></a>05044 
<a name="l05045"></a>05045   <span class="comment">/* On the Arduino Environment this will lead to two calls to u8g_Begin(), the following line will be called first (by U8glib constructors) */</span>
<a name="l05046"></a>05046   <span class="comment">/* if - in future releases - this is removed, then still call u8g_UpdateDimension() */</span>
<a name="l05047"></a>05047   <span class="comment">/* if Arduino call u8g_UpdateDimension else u8g_Begin */</span>
<a name="l05048"></a>05048   <span class="comment">/* issue 146 */</span>
<a name="l05049"></a>05049   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#a926b1f3bb30fbdea20ff1195607101dd">u8g_Begin</a>(u8g);
<a name="l05050"></a>05050 }
<a name="l05051"></a>05051 
<a name="l05052"></a>05052 
<a name="l05053"></a>05053 <span class="preprocessor">#if defined(U8G_WITH_PINLIST)</span>
<a name="l05054"></a>05054 <span class="preprocessor"></span>uint8_t <a class="code" href="u8glib__ex_8h.html#aa72a04654251f8627ad695b1d9a4af8c">u8g_InitSPI</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset)
<a name="l05055"></a>05055 {
<a name="l05056"></a>05056 
<a name="l05057"></a>05057   <span class="comment">/* fill data structure with some suitable values */</span>
<a name="l05058"></a>05058   <a class="code" href="u8glib__ex_8h.html#a427c7f9f8b68f0577f63ddd4749d37b9">u8g_init_data</a>(u8g);
<a name="l05059"></a>05059   u8g-&gt;<a class="code" href="struct__u8g__t.html#a84ad9a754cb8aceb1d79c4c2bbbbc9ee">dev</a> = dev;
<a name="l05060"></a>05060 
<a name="l05061"></a>05061   <span class="comment">/* assign user pins */</span>
<a name="l05062"></a>05062   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a204d15080393ba561cf64aea48892c9c">U8G_PI_SCK</a>] = sck;
<a name="l05063"></a>05063   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#ac2fece13a6875b4bb4c040c3f6f6cded">U8G_PI_MOSI</a>] = mosi;
<a name="l05064"></a>05064   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a4fa6b381ad482e6c679f73388c28a1d3">U8G_PI_CS</a>] = cs;
<a name="l05065"></a>05065   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#aa75b803d9105b2daf2fd419769510106">U8G_PI_A0</a>] = a0;
<a name="l05066"></a>05066   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#ac45f46016ed7f6fbd43ec109db4b14f6">U8G_PI_RESET</a>] = reset;
<a name="l05067"></a>05067 
<a name="l05068"></a>05068   <span class="comment">/* On the Arduino Environment this will lead to two calls to u8g_Begin(), the following line will be called first (by U8glib constructors) */</span>
<a name="l05069"></a>05069   <span class="comment">/* if - in future releases - this is removed, then still call u8g_UpdateDimension() */</span>
<a name="l05070"></a>05070   <span class="comment">/* if Arduino call u8g_UpdateDimension else u8g_Begin */</span>
<a name="l05071"></a>05071   <span class="comment">/* issue 146 */</span>
<a name="l05072"></a>05072   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#a926b1f3bb30fbdea20ff1195607101dd">u8g_Begin</a>(u8g);
<a name="l05073"></a>05073 }
<a name="l05074"></a>05074 
<a name="l05075"></a>05075 uint8_t <a class="code" href="u8glib__ex_8h.html#a0f958db8a9a485742decff1b703bf908">u8g_InitHWSPI</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t cs, uint8_t a0, uint8_t reset)
<a name="l05076"></a>05076 {
<a name="l05077"></a>05077   <span class="comment">/* fill data structure with some suitable values */</span>
<a name="l05078"></a>05078   <a class="code" href="u8glib__ex_8h.html#a427c7f9f8b68f0577f63ddd4749d37b9">u8g_init_data</a>(u8g);
<a name="l05079"></a>05079   u8g-&gt;<a class="code" href="struct__u8g__t.html#a84ad9a754cb8aceb1d79c4c2bbbbc9ee">dev</a> = dev;
<a name="l05080"></a>05080 
<a name="l05081"></a>05081 
<a name="l05082"></a>05082   <span class="comment">/* assign user pins */</span>
<a name="l05083"></a>05083   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a4fa6b381ad482e6c679f73388c28a1d3">U8G_PI_CS</a>] = cs;
<a name="l05084"></a>05084   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#aa75b803d9105b2daf2fd419769510106">U8G_PI_A0</a>] = a0;
<a name="l05085"></a>05085   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#ac45f46016ed7f6fbd43ec109db4b14f6">U8G_PI_RESET</a>] = reset;
<a name="l05086"></a>05086 
<a name="l05087"></a>05087   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#a926b1f3bb30fbdea20ff1195607101dd">u8g_Begin</a>(u8g);
<a name="l05088"></a>05088 }
<a name="l05089"></a>05089 
<a name="l05090"></a>05090 uint8_t <a class="code" href="u8glib__ex_8h.html#aa2e9cfcb1e5f754ed0bc458ab2c9da76">u8g_InitI2C</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t options)
<a name="l05091"></a>05091 {
<a name="l05092"></a>05092   <span class="comment">/* fill data structure with some suitable values */</span>
<a name="l05093"></a>05093   <a class="code" href="u8glib__ex_8h.html#a427c7f9f8b68f0577f63ddd4749d37b9">u8g_init_data</a>(u8g);
<a name="l05094"></a>05094   u8g-&gt;<a class="code" href="struct__u8g__t.html#a84ad9a754cb8aceb1d79c4c2bbbbc9ee">dev</a> = dev;
<a name="l05095"></a>05095 
<a name="l05096"></a>05096   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a853bf5044e36493ed8aed38e7db83228">U8G_PI_I2C_OPTION</a>] = options;
<a name="l05097"></a>05097 
<a name="l05098"></a>05098   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#a926b1f3bb30fbdea20ff1195607101dd">u8g_Begin</a>(u8g);
<a name="l05099"></a>05099 }
<a name="l05100"></a>05100 
<a name="l05101"></a>05101 
<a name="l05102"></a>05102 uint8_t <a class="code" href="u8glib__ex_8h.html#a909f67b86d83adfc47892f7d6f7c91f2">u8g_Init8BitFixedPort</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t en, uint8_t cs, uint8_t di, uint8_t rw, uint8_t reset)
<a name="l05103"></a>05103 {
<a name="l05104"></a>05104 
<a name="l05105"></a>05105   <span class="comment">/* fill data structure with some suitable values */</span>
<a name="l05106"></a>05106   <a class="code" href="u8glib__ex_8h.html#a427c7f9f8b68f0577f63ddd4749d37b9">u8g_init_data</a>(u8g);
<a name="l05107"></a>05107   u8g-&gt;<a class="code" href="struct__u8g__t.html#a84ad9a754cb8aceb1d79c4c2bbbbc9ee">dev</a> = dev;
<a name="l05108"></a>05108 
<a name="l05109"></a>05109   <span class="comment">/* assign user pins */</span>
<a name="l05110"></a>05110 
<a name="l05111"></a>05111   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a83987241e1d1bfaa7c968ad299ab761c">U8G_PI_EN</a>] = en;
<a name="l05112"></a>05112   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a4fa6b381ad482e6c679f73388c28a1d3">U8G_PI_CS</a>] = cs;
<a name="l05113"></a>05113   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a8419eb8938d539c6a2c5c159ddcfcdf6">U8G_PI_DI</a>] = di;
<a name="l05114"></a>05114   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#aa51c622ce539d06553291e65dfbfa6b8">U8G_PI_RW</a>] = rw;
<a name="l05115"></a>05115   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#ac45f46016ed7f6fbd43ec109db4b14f6">U8G_PI_RESET</a>] = reset;
<a name="l05116"></a>05116 
<a name="l05117"></a>05117   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#a926b1f3bb30fbdea20ff1195607101dd">u8g_Begin</a>(u8g);
<a name="l05118"></a>05118 }
<a name="l05119"></a>05119 
<a name="l05120"></a>05120 uint8_t <a class="code" href="u8glib__ex_8h.html#a79c872dcc3b7248cf85b2d7f8fc1d7a5">u8g_Init8Bit</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7,
<a name="l05121"></a>05121   uint8_t en, uint8_t cs1, uint8_t cs2, uint8_t di, uint8_t rw, uint8_t reset)
<a name="l05122"></a>05122 {
<a name="l05123"></a>05123 
<a name="l05124"></a>05124   <span class="comment">/* fill data structure with some suitable values */</span>
<a name="l05125"></a>05125   <a class="code" href="u8glib__ex_8h.html#a427c7f9f8b68f0577f63ddd4749d37b9">u8g_init_data</a>(u8g);
<a name="l05126"></a>05126   u8g-&gt;<a class="code" href="struct__u8g__t.html#a84ad9a754cb8aceb1d79c4c2bbbbc9ee">dev</a> = dev;
<a name="l05127"></a>05127 
<a name="l05128"></a>05128   <span class="comment">/* assign user pins */</span>
<a name="l05129"></a>05129 
<a name="l05130"></a>05130   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#affd361df756c956b68643a66207afbe1">U8G_PI_D0</a>] = d0;
<a name="l05131"></a>05131   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#af00a114a70bec42e327ac94881311f46">U8G_PI_D1</a>] = d1;
<a name="l05132"></a>05132   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a12b352d2c82918e49d64d8617037e7bd">U8G_PI_D2</a>] = d2;
<a name="l05133"></a>05133   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a9df489412cad4918687943a4457cb2a9">U8G_PI_D3</a>] = d3;
<a name="l05134"></a>05134   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#ac181d93982d3d339d3bc6ca1b7eb96ce">U8G_PI_D4</a>] = d4;
<a name="l05135"></a>05135   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a9bee65d8f371f1140e2d2c79af728e3f">U8G_PI_D5</a>] = d5;
<a name="l05136"></a>05136   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a1f828caefd1e5e0150f883585209ea29">U8G_PI_D6</a>] = d6;
<a name="l05137"></a>05137   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a23182556b0cf6f9a271563930f340e22">U8G_PI_D7</a>] = d7;
<a name="l05138"></a>05138 
<a name="l05139"></a>05139   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a83987241e1d1bfaa7c968ad299ab761c">U8G_PI_EN</a>] = en;
<a name="l05140"></a>05140   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#ada1bfd73b486da044cdd2e938c374fe9">U8G_PI_CS1</a>] = cs1;
<a name="l05141"></a>05141   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a945f039d57ab4a5d1dac557b520a9b38">U8G_PI_CS2</a>] = cs2;
<a name="l05142"></a>05142   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a8419eb8938d539c6a2c5c159ddcfcdf6">U8G_PI_DI</a>] = di;
<a name="l05143"></a>05143   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#aa51c622ce539d06553291e65dfbfa6b8">U8G_PI_RW</a>] = rw;
<a name="l05144"></a>05144   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#ac45f46016ed7f6fbd43ec109db4b14f6">U8G_PI_RESET</a>] = reset;
<a name="l05145"></a>05145 
<a name="l05146"></a>05146   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#a926b1f3bb30fbdea20ff1195607101dd">u8g_Begin</a>(u8g);
<a name="l05147"></a>05147 }
<a name="l05148"></a>05148 
<a name="l05149"></a>05149 <span class="comment">/*</span>
<a name="l05150"></a>05150 <span class="comment"></span>
<a name="l05151"></a>05151 <span class="comment">  PIN_D0 8</span>
<a name="l05152"></a>05152 <span class="comment">  PIN_D1 9</span>
<a name="l05153"></a>05153 <span class="comment">  PIN_D2 10</span>
<a name="l05154"></a>05154 <span class="comment">  PIN_D3 11</span>
<a name="l05155"></a>05155 <span class="comment">  PIN_D4 4</span>
<a name="l05156"></a>05156 <span class="comment">  PIN_D5 5</span>
<a name="l05157"></a>05157 <span class="comment">  PIN_D6 6</span>
<a name="l05158"></a>05158 <span class="comment">  PIN_D7 7</span>
<a name="l05159"></a>05159 <span class="comment"></span>
<a name="l05160"></a>05160 <span class="comment">  PIN_CS 14</span>
<a name="l05161"></a>05161 <span class="comment">  PIN_A0 15</span>
<a name="l05162"></a>05162 <span class="comment">  PIN_RESET 16</span>
<a name="l05163"></a>05163 <span class="comment">  PIN_WR 17</span>
<a name="l05164"></a>05164 <span class="comment">  PIN_RD 18</span>
<a name="l05165"></a>05165 <span class="comment"></span>
<a name="l05166"></a>05166 <span class="comment">  u8g_InitRW8Bit(u8g, dev, d0, d1, d2, d3, d4, d5, d6, d7, cs, a0, wr, rd, reset)</span>
<a name="l05167"></a>05167 <span class="comment">  u8g_InitRW8Bit(u8g, dev,  8,  9, 10, 11,  4,  5,  6,  7, 14, 15, 17, 18, 16)</span>
<a name="l05168"></a>05168 <span class="comment"></span>
<a name="l05169"></a>05169 <span class="comment">*/</span>
<a name="l05170"></a>05170 
<a name="l05171"></a>05171 uint8_t <a class="code" href="u8glib__ex_8h.html#a50610cc290652114cac33345ae5e8b71">u8g_InitRW8Bit</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7,
<a name="l05172"></a>05172   uint8_t cs, uint8_t a0, uint8_t wr, uint8_t rd, uint8_t reset)
<a name="l05173"></a>05173 {
<a name="l05174"></a>05174 
<a name="l05175"></a>05175   <span class="comment">/* fill data structure with some suitable values */</span>
<a name="l05176"></a>05176   <a class="code" href="u8glib__ex_8h.html#a427c7f9f8b68f0577f63ddd4749d37b9">u8g_init_data</a>(u8g);
<a name="l05177"></a>05177   u8g-&gt;<a class="code" href="struct__u8g__t.html#a84ad9a754cb8aceb1d79c4c2bbbbc9ee">dev</a> = dev;
<a name="l05178"></a>05178 
<a name="l05179"></a>05179   <span class="comment">/* assign user pins */</span>
<a name="l05180"></a>05180 
<a name="l05181"></a>05181   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#affd361df756c956b68643a66207afbe1">U8G_PI_D0</a>] = d0;
<a name="l05182"></a>05182   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#af00a114a70bec42e327ac94881311f46">U8G_PI_D1</a>] = d1;
<a name="l05183"></a>05183   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a12b352d2c82918e49d64d8617037e7bd">U8G_PI_D2</a>] = d2;
<a name="l05184"></a>05184   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a9df489412cad4918687943a4457cb2a9">U8G_PI_D3</a>] = d3;
<a name="l05185"></a>05185   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#ac181d93982d3d339d3bc6ca1b7eb96ce">U8G_PI_D4</a>] = d4;
<a name="l05186"></a>05186   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a9bee65d8f371f1140e2d2c79af728e3f">U8G_PI_D5</a>] = d5;
<a name="l05187"></a>05187   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a1f828caefd1e5e0150f883585209ea29">U8G_PI_D6</a>] = d6;
<a name="l05188"></a>05188   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a23182556b0cf6f9a271563930f340e22">U8G_PI_D7</a>] = d7;
<a name="l05189"></a>05189 
<a name="l05190"></a>05190   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a4fa6b381ad482e6c679f73388c28a1d3">U8G_PI_CS</a>] = cs;
<a name="l05191"></a>05191   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#aa75b803d9105b2daf2fd419769510106">U8G_PI_A0</a>] = a0;
<a name="l05192"></a>05192   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a7e3a774e3f532ab4aa57d7078e10c54c">U8G_PI_WR</a>] = wr;
<a name="l05193"></a>05193   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a6d1b5c9b48e159e2f76255e37b205fb7">U8G_PI_RD</a>] = rd;
<a name="l05194"></a>05194   u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#ac45f46016ed7f6fbd43ec109db4b14f6">U8G_PI_RESET</a>] = reset;
<a name="l05195"></a>05195 
<a name="l05196"></a>05196   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#a926b1f3bb30fbdea20ff1195607101dd">u8g_Begin</a>(u8g);
<a name="l05197"></a>05197 }
<a name="l05198"></a>05198 <span class="preprocessor">#endif </span><span class="comment">/* defined(U8G_WITH_PINLIST)  */</span>
<a name="l05199"></a>05199 
<a name="l05200"></a><a class="code" href="u8glib__ex_8h.html#aa54637a626ad50ec0f077e497cd3a155">05200</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#aa54637a626ad50ec0f077e497cd3a155">u8g_FirstPage</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g)
<a name="l05201"></a>05201 {
<a name="l05202"></a>05202   <a class="code" href="u8glib__ex_8h.html#ad1bed8da32d3147c81b3ffc03676f77b">u8g_FirstPageLL</a>(u8g, u8g-&gt;<a class="code" href="struct__u8g__t.html#a84ad9a754cb8aceb1d79c4c2bbbbc9ee">dev</a>);
<a name="l05203"></a>05203 }
<a name="l05204"></a>05204 
<a name="l05205"></a><a class="code" href="u8glib__ex_8h.html#a0205f91bc51532741a65c5bbe1bfacf5">05205</a> uint8_t <a class="code" href="u8glib__ex_8h.html#a0205f91bc51532741a65c5bbe1bfacf5">u8g_NextPage</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g)
<a name="l05206"></a>05206 {
<a name="l05207"></a>05207   <span class="keywordflow">if</span>  ( u8g-&gt;<a class="code" href="struct__u8g__t.html#a09e15890b91ffc2c929ee2ef5af11461">cursor_fn</a> != (<a class="code" href="u8glib__ex_8h.html#af8ea0e7393123d837fdcadf76c000518">u8g_draw_cursor_fn</a>)0 )
<a name="l05208"></a>05208   {
<a name="l05209"></a>05209     u8g-&gt;<a class="code" href="struct__u8g__t.html#a09e15890b91ffc2c929ee2ef5af11461">cursor_fn</a>(u8g);
<a name="l05210"></a>05210   }
<a name="l05211"></a>05211   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#a20550f4e2aabb9ac427c4997c94c5783">u8g_NextPageLL</a>(u8g, u8g-&gt;<a class="code" href="struct__u8g__t.html#a84ad9a754cb8aceb1d79c4c2bbbbc9ee">dev</a>);
<a name="l05212"></a>05212 }
<a name="l05213"></a>05213 
<a name="l05214"></a><a class="code" href="u8glib__ex_8h.html#a004775899e0b7d861ac4b54fe7778828">05214</a> uint8_t <a class="code" href="u8glib__ex_8h.html#a004775899e0b7d861ac4b54fe7778828">u8g_SetContrast</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t contrast)
<a name="l05215"></a>05215 {
<a name="l05216"></a>05216   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#ad6f2bcb2bd216ccabc35f72a64625294">u8g_SetContrastLL</a>(u8g, u8g-&gt;<a class="code" href="struct__u8g__t.html#a84ad9a754cb8aceb1d79c4c2bbbbc9ee">dev</a>, contrast);
<a name="l05217"></a>05217 }
<a name="l05218"></a>05218 
<a name="l05219"></a><a class="code" href="u8glib__ex_8h.html#a5d66e114a3b56f37cf21abeba8ec328d">05219</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a5d66e114a3b56f37cf21abeba8ec328d">u8g_SleepOn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g)
<a name="l05220"></a>05220 {
<a name="l05221"></a>05221   <a class="code" href="u8glib__ex_8h.html#ab0c0fd456482ffff05956cbadbe80ddf">u8g_call_dev_fn</a>(u8g, u8g-&gt;<a class="code" href="struct__u8g__t.html#a84ad9a754cb8aceb1d79c4c2bbbbc9ee">dev</a>, <a class="code" href="u8glib__ex_8h.html#acaa8df1efdae0c5628708715fa32d217">U8G_DEV_MSG_SLEEP_ON</a>, NULL);
<a name="l05222"></a>05222 }
<a name="l05223"></a>05223 
<a name="l05224"></a><a class="code" href="u8glib__ex_8h.html#ac3893c55b894e7c2cc7da18095416924">05224</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#ac3893c55b894e7c2cc7da18095416924">u8g_SleepOff</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g)
<a name="l05225"></a>05225 {
<a name="l05226"></a>05226   <a class="code" href="u8glib__ex_8h.html#ab0c0fd456482ffff05956cbadbe80ddf">u8g_call_dev_fn</a>(u8g, u8g-&gt;<a class="code" href="struct__u8g__t.html#a84ad9a754cb8aceb1d79c4c2bbbbc9ee">dev</a>, <a class="code" href="u8glib__ex_8h.html#a5a88e8306a2f96015f33077f26327943">U8G_DEV_MSG_SLEEP_OFF</a>, NULL);
<a name="l05227"></a>05227 }
<a name="l05228"></a>05228 
<a name="l05229"></a>05229 
<a name="l05230"></a><a class="code" href="u8glib__ex_8h.html#a8dc841c0eff99d60b40f01c3b48e626f">05230</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a8dc841c0eff99d60b40f01c3b48e626f">u8g_DrawPixel</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y)
<a name="l05231"></a>05231 {
<a name="l05232"></a>05232   <a class="code" href="u8glib__ex_8h.html#adae0bf770f21ccdc411e8eb48109f873">u8g_DrawPixelLL</a>(u8g, u8g-&gt;<a class="code" href="struct__u8g__t.html#a84ad9a754cb8aceb1d79c4c2bbbbc9ee">dev</a>, x, y);
<a name="l05233"></a>05233 }
<a name="l05234"></a>05234 
<a name="l05235"></a><a class="code" href="u8glib__ex_8h.html#a541bde03a368db9b3bd043ce96100133">05235</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a541bde03a368db9b3bd043ce96100133">u8g_Draw8Pixel</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel)
<a name="l05236"></a>05236 {
<a name="l05237"></a>05237   <a class="code" href="u8glib__ex_8h.html#abeb307b1a4fe97b24679e9330eb2f841">u8g_Draw8PixelLL</a>(u8g, u8g-&gt;<a class="code" href="struct__u8g__t.html#a84ad9a754cb8aceb1d79c4c2bbbbc9ee">dev</a>, x, y, dir, pixel);
<a name="l05238"></a>05238 }
<a name="l05239"></a>05239 
<a name="l05240"></a><a class="code" href="u8glib__ex_8h.html#a6b07af91d256375473e016f49f01b844">05240</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a6b07af91d256375473e016f49f01b844">u8g_Draw4TPixel</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel)
<a name="l05241"></a>05241 {
<a name="l05242"></a>05242   <a class="code" href="u8glib__ex_8h.html#a6a43acba15120a8dcae6292c563b88ee">u8g_Draw4TPixelLL</a>(u8g, u8g-&gt;<a class="code" href="struct__u8g__t.html#a84ad9a754cb8aceb1d79c4c2bbbbc9ee">dev</a>, x, y, dir, pixel);
<a name="l05243"></a>05243 }
<a name="l05244"></a>05244 
<a name="l05245"></a>05245 
<a name="l05246"></a>05246 <span class="comment">/* u8g_IsBBXIntersection() has been moved to u8g_clip.c */</span>
<a name="l05247"></a>05247 <span class="preprocessor">#ifdef OBSOLETE_CODE</span>
<a name="l05248"></a>05248 <span class="preprocessor"></span>uint8_t <a class="code" href="u8glib__ex_8h.html#a4ed53b97d1b77b8ecaff352f5b1c6161">u8g_IsBBXIntersection</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h)
<a name="l05249"></a>05249 {
<a name="l05250"></a>05250   <span class="comment">/* new code */</span>
<a name="l05251"></a>05251   <a class="code" href="struct__u8g__dev__arg__bbx__t.html">u8g_dev_arg_bbx_t</a> arg;
<a name="l05252"></a>05252   arg.<a class="code" href="struct__u8g__dev__arg__bbx__t.html#a0bd126a4a84709451f22abb1c7c704d0">x</a> = <a class="code" href="structu8g__str__size__struct.html#a3ed6e6c91c0b672a428f3f627dfd148b">x</a>;
<a name="l05253"></a>05253   arg.<a class="code" href="struct__u8g__dev__arg__bbx__t.html#a14d91862d05b147bd3ddaa61dec19f21">y</a> = <a class="code" href="structu8g__str__size__struct.html#aa8648aa0bb6df77525620af6fcb214cf">y</a>;
<a name="l05254"></a>05254   arg.<a class="code" href="struct__u8g__dev__arg__bbx__t.html#aea376a9f764f4a9cf33e2c9ae174001a">w</a> = <a class="code" href="structu8g__str__size__struct.html#aea376a9f764f4a9cf33e2c9ae174001a">w</a>;
<a name="l05255"></a>05255   arg.<a class="code" href="struct__u8g__dev__arg__bbx__t.html#a3f4daedecdf3e9d710c56dcb6e80cecb">h</a> = h;
<a name="l05256"></a>05256   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#a247c15396e13f07204886eb359d54a78">u8g_is_box_bbx_intersection</a>(&amp;(u8g-&gt;<a class="code" href="struct__u8g__t.html#a894ed7c2dd9e859af28bc0c25f673fae">current_page</a>), &amp;arg);
<a name="l05257"></a>05257 
<a name="l05258"></a>05258   <span class="comment">/* old code */</span>
<a name="l05259"></a>05259   <span class="comment">//return u8g_IsBBXIntersectionLL(u8g, u8g-&gt;dev, x, y, w, h);</span>
<a name="l05260"></a>05260 }
<a name="l05261"></a>05261 <span class="preprocessor">#endif</span>
<a name="l05262"></a>05262 <span class="preprocessor"></span>
<a name="l05263"></a>05263 <span class="comment">/*</span>
<a name="l05264"></a>05264 <span class="comment">  idx: index for the palette entry (0..255)</span>
<a name="l05265"></a>05265 <span class="comment">  r: value for red (0..255)</span>
<a name="l05266"></a>05266 <span class="comment">  g: value for green (0..255)</span>
<a name="l05267"></a>05267 <span class="comment">  b: value for blue (0..255)</span>
<a name="l05268"></a>05268 <span class="comment">*/</span>
<a name="l05269"></a><a class="code" href="u8glib__ex_8h.html#a89173ab79781eeedeec8eb4a04669e4b">05269</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a89173ab79781eeedeec8eb4a04669e4b">u8g_SetColorEntry</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t idx, uint8_t r, uint8_t g, uint8_t b)
<a name="l05270"></a>05270 {
<a name="l05271"></a>05271   <a class="code" href="struct__u8g__dev__arg__irgb__t.html">u8g_dev_arg_irgb_t</a> irgb;
<a name="l05272"></a>05272   irgb.<a class="code" href="struct__u8g__dev__arg__irgb__t.html#a22d765af22623542e427109d45d85809">idx</a> = idx;
<a name="l05273"></a>05273   irgb.<a class="code" href="struct__u8g__dev__arg__irgb__t.html#af1d72be24123b235c1fe53bfbfc771e4">r</a> = r;
<a name="l05274"></a>05274   irgb.<a class="code" href="struct__u8g__dev__arg__irgb__t.html#a7fd191d918bc275c56acabcb5aa0bf5a">g</a> = g;
<a name="l05275"></a>05275   irgb.<a class="code" href="struct__u8g__dev__arg__irgb__t.html#ab23a75b58e1f5f0f406890f2cdd77376">b</a> = b;
<a name="l05276"></a>05276   <a class="code" href="u8glib__ex_8h.html#ab0c0fd456482ffff05956cbadbe80ddf">u8g_call_dev_fn</a>(u8g, u8g-&gt;<a class="code" href="struct__u8g__t.html#a84ad9a754cb8aceb1d79c4c2bbbbc9ee">dev</a>, <a class="code" href="u8glib__ex_8h.html#a004a15da87b3ed36add4ae26b07db815">U8G_DEV_MSG_SET_COLOR_ENTRY</a>, &amp;irgb);
<a name="l05277"></a>05277 }
<a name="l05278"></a>05278 
<a name="l05279"></a><a class="code" href="u8glib__ex_8h.html#aefd0ab5f91aba8c61244029339961aeb">05279</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#aefd0ab5f91aba8c61244029339961aeb">u8g_SetColorIndex</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t idx)
<a name="l05280"></a>05280 {
<a name="l05281"></a>05281   u8g-&gt;<a class="code" href="struct__u8g__t.html#adea2457d691fd14b5f647aeedeef955b">arg_pixel</a>.<a class="code" href="struct__u8g__dev__arg__pixel__t.html#aa99ddefe5089389e170ccbec18a60ec2">color</a> = idx;
<a name="l05282"></a>05282   <span class="comment">/*u8g-&gt;color_index = idx; */</span> <span class="comment">/* must be removed */</span>
<a name="l05283"></a>05283 }
<a name="l05284"></a>05284 
<a name="l05285"></a><a class="code" href="u8glib__ex_8h.html#a83cdbb6f0b07115af60562b42c9cb38d">05285</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a83cdbb6f0b07115af60562b42c9cb38d">u8g_SetHiColor</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint16_t rgb)
<a name="l05286"></a>05286 {
<a name="l05287"></a>05287   u8g-&gt;<a class="code" href="struct__u8g__t.html#adea2457d691fd14b5f647aeedeef955b">arg_pixel</a>.<a class="code" href="struct__u8g__dev__arg__pixel__t.html#aa99ddefe5089389e170ccbec18a60ec2">color</a> = rgb&amp;255;
<a name="l05288"></a>05288   u8g-&gt;<a class="code" href="struct__u8g__t.html#adea2457d691fd14b5f647aeedeef955b">arg_pixel</a>.<a class="code" href="struct__u8g__dev__arg__pixel__t.html#adf8ea7940de241dd8dd533bbbf94147b">hi_color</a> = rgb&gt;&gt;8;
<a name="l05289"></a>05289   <span class="comment">/*u8g-&gt;color_index = idx; */</span> <span class="comment">/* must be removed */</span>
<a name="l05290"></a>05290 }
<a name="l05291"></a>05291 
<a name="l05292"></a><a class="code" href="u8glib__ex_8h.html#a812a2497f35f1a91019c2265145455da">05292</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a812a2497f35f1a91019c2265145455da">u8g_SetHiColorByRGB</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t r, uint8_t g, uint8_t b)
<a name="l05293"></a>05293 {
<a name="l05294"></a>05294 
<a name="l05295"></a>05295   r &amp;= ~7;
<a name="l05296"></a>05296   g &gt;&gt;= 2;
<a name="l05297"></a>05297   b &gt;&gt;= 3;
<a name="l05298"></a>05298   u8g-&gt;<a class="code" href="struct__u8g__t.html#adea2457d691fd14b5f647aeedeef955b">arg_pixel</a>.<a class="code" href="struct__u8g__dev__arg__pixel__t.html#aa99ddefe5089389e170ccbec18a60ec2">color</a> = b;
<a name="l05299"></a>05299   u8g-&gt;<a class="code" href="struct__u8g__t.html#adea2457d691fd14b5f647aeedeef955b">arg_pixel</a>.<a class="code" href="struct__u8g__dev__arg__pixel__t.html#aa99ddefe5089389e170ccbec18a60ec2">color</a> |= (g &amp; 7) &lt;&lt; 5;
<a name="l05300"></a>05300   u8g-&gt;<a class="code" href="struct__u8g__t.html#adea2457d691fd14b5f647aeedeef955b">arg_pixel</a>.<a class="code" href="struct__u8g__dev__arg__pixel__t.html#adf8ea7940de241dd8dd533bbbf94147b">hi_color</a> = r;
<a name="l05301"></a>05301   u8g-&gt;<a class="code" href="struct__u8g__t.html#adea2457d691fd14b5f647aeedeef955b">arg_pixel</a>.<a class="code" href="struct__u8g__dev__arg__pixel__t.html#adf8ea7940de241dd8dd533bbbf94147b">hi_color</a> |= (g&gt;&gt;3) &amp; 7;
<a name="l05302"></a>05302 
<a name="l05303"></a>05303   <span class="comment">//u8g_SetHiColor(u8g, U8G_GET_HICOLOR_BY_RGB(r,g,b));</span>
<a name="l05304"></a>05304 }
<a name="l05305"></a>05305 
<a name="l05306"></a><a class="code" href="u8glib__ex_8h.html#ab97704290c02cada186f1332cbcd0701">05306</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#ab97704290c02cada186f1332cbcd0701">u8g_SetRGB</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t r, uint8_t g, uint8_t b)
<a name="l05307"></a>05307 {
<a name="l05308"></a>05308   <span class="keywordflow">if</span> ( u8g-&gt;<a class="code" href="struct__u8g__t.html#a37e90f5e3bd99fac2021fb3a326607d4">mode</a> == <a class="code" href="u8glib__ex_8h.html#a103aab5c2d5cde46e52b9a2f26581d33">U8G_MODE_R3G3B2</a> )
<a name="l05309"></a>05309   {
<a name="l05310"></a>05310     r &amp;= 0x0e0;
<a name="l05311"></a>05311     g &amp;= 0x0e0;
<a name="l05312"></a>05312     g &gt;&gt;= 3;
<a name="l05313"></a>05313     b &gt;&gt;= 6;
<a name="l05314"></a>05314     u8g-&gt;<a class="code" href="struct__u8g__t.html#adea2457d691fd14b5f647aeedeef955b">arg_pixel</a>.<a class="code" href="struct__u8g__dev__arg__pixel__t.html#aa99ddefe5089389e170ccbec18a60ec2">color</a> = r | g | b;
<a name="l05315"></a>05315   }
<a name="l05316"></a>05316   <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( u8g-&gt;<a class="code" href="struct__u8g__t.html#a37e90f5e3bd99fac2021fb3a326607d4">mode</a> == <a class="code" href="u8glib__ex_8h.html#a8258bd5a31f7944f49b10cd239c26a66">U8G_MODE_HICOLOR</a> )
<a name="l05317"></a>05317   {
<a name="l05318"></a>05318     <a class="code" href="u8glib__ex_8h.html#a812a2497f35f1a91019c2265145455da">u8g_SetHiColorByRGB</a>(u8g, r,g,b);
<a name="l05319"></a>05319   }
<a name="l05320"></a>05320   <span class="keywordflow">else</span>
<a name="l05321"></a>05321   {
<a name="l05322"></a>05322     u8g-&gt;<a class="code" href="struct__u8g__t.html#adea2457d691fd14b5f647aeedeef955b">arg_pixel</a>.<a class="code" href="struct__u8g__dev__arg__pixel__t.html#aa99ddefe5089389e170ccbec18a60ec2">color</a> = r;
<a name="l05323"></a>05323     u8g-&gt;<a class="code" href="struct__u8g__t.html#adea2457d691fd14b5f647aeedeef955b">arg_pixel</a>.<a class="code" href="struct__u8g__dev__arg__pixel__t.html#adf8ea7940de241dd8dd533bbbf94147b">hi_color</a> = g;
<a name="l05324"></a>05324     u8g-&gt;<a class="code" href="struct__u8g__t.html#adea2457d691fd14b5f647aeedeef955b">arg_pixel</a>.<a class="code" href="struct__u8g__dev__arg__pixel__t.html#a287b397e90d7b995c81ff54e741f96b2">blue</a> = b;
<a name="l05325"></a>05325   }
<a name="l05326"></a>05326 }
<a name="l05327"></a>05327 
<a name="l05328"></a>05328 
<a name="l05329"></a><a class="code" href="u8glib__ex_8h.html#a6aadefad11e0afaf2073c4dd23359e62">05329</a> uint8_t <a class="code" href="u8glib__ex_8h.html#a6aadefad11e0afaf2073c4dd23359e62">u8g_GetColorIndex</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g)
<a name="l05330"></a>05330 {
<a name="l05331"></a>05331   <span class="keywordflow">return</span> u8g-&gt;<a class="code" href="struct__u8g__t.html#adea2457d691fd14b5f647aeedeef955b">arg_pixel</a>.<a class="code" href="struct__u8g__dev__arg__pixel__t.html#aa99ddefe5089389e170ccbec18a60ec2">color</a>;
<a name="l05332"></a>05332 }
<a name="l05333"></a>05333 
<a name="l05334"></a><a class="code" href="u8glib__ex_8h.html#a096dff3c0f55a490de25ef00414df635">05334</a> uint8_t <a class="code" href="u8glib__ex_8h.html#a096dff3c0f55a490de25ef00414df635">u8g_GetDefaultForegroundColor</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g)
<a name="l05335"></a>05335 {
<a name="l05336"></a>05336   uint8_t mode;
<a name="l05337"></a>05337   mode = <a class="code" href="u8glib__ex_8h.html#aec0760c8d15ede75f043468ce888d0e6">u8g_GetMode</a>(u8g);
<a name="l05338"></a>05338   <span class="keywordflow">if</span> ( mode == <a class="code" href="u8glib__ex_8h.html#a103aab5c2d5cde46e52b9a2f26581d33">U8G_MODE_R3G3B2</a> )
<a name="l05339"></a>05339     <span class="keywordflow">return</span> 255;     <span class="comment">/* white */</span>
<a name="l05340"></a>05340   <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( <a class="code" href="u8glib__ex_8h.html#aec0760c8d15ede75f043468ce888d0e6">u8g_GetMode</a>(u8g) == <a class="code" href="u8glib__ex_8h.html#a8aa1413265e309c6ef9e69f5a2046ccc">U8G_MODE_GRAY2BIT</a> )
<a name="l05341"></a>05341     <span class="keywordflow">return</span> 3;         <span class="comment">/* max intensity */</span>
<a name="l05342"></a>05342   <span class="keywordflow">else</span> <span class="comment">/* if ( u8g.getMode() == U8G_MODE_BW ) */</span>
<a name="l05343"></a>05343     <span class="keywordflow">return</span> 1;         <span class="comment">/* pixel on */</span>
<a name="l05344"></a>05344   <span class="keywordflow">return</span> 1;
<a name="l05345"></a>05345 }
<a name="l05346"></a>05346 
<a name="l05347"></a><a class="code" href="u8glib__ex_8h.html#a8630e1de18dc8540f7ef23912e1f3eff">05347</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a8630e1de18dc8540f7ef23912e1f3eff">u8g_SetDefaultForegroundColor</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g)
<a name="l05348"></a>05348 {
<a name="l05349"></a>05349   <span class="keywordflow">if</span> ( u8g-&gt;<a class="code" href="struct__u8g__t.html#a37e90f5e3bd99fac2021fb3a326607d4">mode</a> == <a class="code" href="u8glib__ex_8h.html#a8258bd5a31f7944f49b10cd239c26a66">U8G_MODE_HICOLOR</a> )
<a name="l05350"></a>05350   {
<a name="l05351"></a>05351     u8g-&gt;<a class="code" href="struct__u8g__t.html#adea2457d691fd14b5f647aeedeef955b">arg_pixel</a>.<a class="code" href="struct__u8g__dev__arg__pixel__t.html#aa99ddefe5089389e170ccbec18a60ec2">color</a> = 0x0ff;
<a name="l05352"></a>05352     u8g-&gt;<a class="code" href="struct__u8g__t.html#adea2457d691fd14b5f647aeedeef955b">arg_pixel</a>.<a class="code" href="struct__u8g__dev__arg__pixel__t.html#adf8ea7940de241dd8dd533bbbf94147b">hi_color</a> = 0x0ff;
<a name="l05353"></a>05353   }
<a name="l05354"></a>05354   <span class="keywordflow">else</span>
<a name="l05355"></a>05355   {
<a name="l05356"></a>05356     <a class="code" href="u8glib__ex_8h.html#aefd0ab5f91aba8c61244029339961aeb">u8g_SetColorIndex</a>(u8g, <a class="code" href="u8glib__ex_8h.html#a096dff3c0f55a490de25ef00414df635">u8g_GetDefaultForegroundColor</a>(u8g));
<a name="l05357"></a>05357   }
<a name="l05358"></a>05358 }
<a name="l05359"></a>05359 
<a name="l05360"></a><a class="code" href="u8glib__ex_8h.html#a503df9fe142f0b0fa3957ce6dfdaf129">05360</a> uint8_t <a class="code" href="u8glib__ex_8h.html#a503df9fe142f0b0fa3957ce6dfdaf129">u8g_GetDefaultBackgroundColor</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g)
<a name="l05361"></a>05361 {
<a name="l05362"></a>05362   <span class="keywordflow">return</span> 0;
<a name="l05363"></a>05363 }
<a name="l05364"></a>05364 
<a name="l05365"></a><a class="code" href="u8glib__ex_8h.html#a8ebf21f5b7876ffcd6ff534d0af6d2fb">05365</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a8ebf21f5b7876ffcd6ff534d0af6d2fb">u8g_SetDefaultBackgroundColor</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g)
<a name="l05366"></a>05366 {
<a name="l05367"></a>05367   <a class="code" href="u8glib__ex_8h.html#aefd0ab5f91aba8c61244029339961aeb">u8g_SetColorIndex</a>(u8g, <a class="code" href="u8glib__ex_8h.html#a503df9fe142f0b0fa3957ce6dfdaf129">u8g_GetDefaultBackgroundColor</a>(u8g));         <span class="comment">/* pixel on / black */</span>
<a name="l05368"></a>05368 }
<a name="l05369"></a>05369 
<a name="l05370"></a><a class="code" href="u8glib__ex_8h.html#a8bd860cbd1d7e1dc214d690ded92bf24">05370</a> uint8_t <a class="code" href="u8glib__ex_8h.html#a8bd860cbd1d7e1dc214d690ded92bf24">u8g_GetDefaultMidColor</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g)
<a name="l05371"></a>05371 {
<a name="l05372"></a>05372   uint8_t mode;
<a name="l05373"></a>05373   mode = <a class="code" href="u8glib__ex_8h.html#aec0760c8d15ede75f043468ce888d0e6">u8g_GetMode</a>(u8g);
<a name="l05374"></a>05374   <span class="keywordflow">if</span> ( mode == <a class="code" href="u8glib__ex_8h.html#a103aab5c2d5cde46e52b9a2f26581d33">U8G_MODE_R3G3B2</a> )
<a name="l05375"></a>05375     <span class="keywordflow">return</span> 0x06d;     <span class="comment">/* gray: 01101101 */</span>
<a name="l05376"></a>05376   <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( <a class="code" href="u8glib__ex_8h.html#aec0760c8d15ede75f043468ce888d0e6">u8g_GetMode</a>(u8g) == <a class="code" href="u8glib__ex_8h.html#a8aa1413265e309c6ef9e69f5a2046ccc">U8G_MODE_GRAY2BIT</a> )
<a name="l05377"></a>05377     <span class="keywordflow">return</span> 1;         <span class="comment">/* low mid intensity */</span>
<a name="l05378"></a>05378   <span class="keywordflow">else</span> <span class="comment">/* if ( u8g.getMode() == U8G_MODE_BW ) */</span>
<a name="l05379"></a>05379     <span class="keywordflow">return</span> 1;         <span class="comment">/* pixel on */</span>
<a name="l05380"></a>05380   <span class="keywordflow">return</span> 1;   <span class="comment">/* default */</span>
<a name="l05381"></a>05381 }
<a name="l05382"></a>05382 
<a name="l05383"></a><a class="code" href="u8glib__ex_8h.html#a5ff155c33ac11f990edd9743e4ff4ca9">05383</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a5ff155c33ac11f990edd9743e4ff4ca9">u8g_SetDefaultMidColor</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g)
<a name="l05384"></a>05384 {
<a name="l05385"></a>05385   <a class="code" href="u8glib__ex_8h.html#aefd0ab5f91aba8c61244029339961aeb">u8g_SetColorIndex</a>(u8g, <a class="code" href="u8glib__ex_8h.html#a8bd860cbd1d7e1dc214d690ded92bf24">u8g_GetDefaultMidColor</a>(u8g));
<a name="l05386"></a>05386 }
<a name="l05387"></a>05387 
<a name="l05388"></a>05388 <span class="comment">// ============== u8g_com_api.c ==================</span>
<a name="l05389"></a>05389 <span class="comment">/*</span>
<a name="l05390"></a>05390 <span class="comment"></span>
<a name="l05391"></a>05391 <span class="comment">  u8g_com_api.c</span>
<a name="l05392"></a>05392 <span class="comment"></span>
<a name="l05393"></a>05393 <span class="comment">  Universal 8bit Graphics Library</span>
<a name="l05394"></a>05394 <span class="comment"></span>
<a name="l05395"></a>05395 <span class="comment">  Copyright (c) 2011, olikraus@gmail.com</span>
<a name="l05396"></a>05396 <span class="comment">  All rights reserved.</span>
<a name="l05397"></a>05397 <span class="comment"></span>
<a name="l05398"></a>05398 <span class="comment">  Redistribution and use in source and binary forms, with or without modification,</span>
<a name="l05399"></a>05399 <span class="comment">  are permitted provided that the following conditions are met:</span>
<a name="l05400"></a>05400 <span class="comment"></span>
<a name="l05401"></a>05401 <span class="comment">  * Redistributions of source code must retain the above copyright notice, this list</span>
<a name="l05402"></a>05402 <span class="comment">    of conditions and the following disclaimer.</span>
<a name="l05403"></a>05403 <span class="comment"></span>
<a name="l05404"></a>05404 <span class="comment">  * Redistributions in binary form must reproduce the above copyright notice, this</span>
<a name="l05405"></a>05405 <span class="comment">    list of conditions and the following disclaimer in the documentation and/or other</span>
<a name="l05406"></a>05406 <span class="comment">    materials provided with the distribution.</span>
<a name="l05407"></a>05407 <span class="comment"></span>
<a name="l05408"></a>05408 <span class="comment">  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND</span>
<a name="l05409"></a>05409 <span class="comment">  CONTRIBUTORS &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES,</span>
<a name="l05410"></a>05410 <span class="comment">  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF</span>
<a name="l05411"></a>05411 <span class="comment">  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span>
<a name="l05412"></a>05412 <span class="comment">  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR</span>
<a name="l05413"></a>05413 <span class="comment">  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</span>
<a name="l05414"></a>05414 <span class="comment">  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT</span>
<a name="l05415"></a>05415 <span class="comment">  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span>
<a name="l05416"></a>05416 <span class="comment">  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span>
<a name="l05417"></a>05417 <span class="comment">  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,</span>
<a name="l05418"></a>05418 <span class="comment">  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span>
<a name="l05419"></a>05419 <span class="comment">  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF</span>
<a name="l05420"></a>05420 <span class="comment">  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span>
<a name="l05421"></a>05421 <span class="comment"></span>
<a name="l05422"></a>05422 <span class="comment"></span>
<a name="l05423"></a>05423 <span class="comment">*/</span>
<a name="l05424"></a>05424 
<a name="l05425"></a>05425 
<a name="l05426"></a><a class="code" href="u8glib__ex_8h.html#a518771bfce1a599503b3063d456be9b9">05426</a> uint8_t <a class="code" href="u8glib__ex_8h.html#a518771bfce1a599503b3063d456be9b9">u8g_InitCom</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t clk_cycle_time)
<a name="l05427"></a>05427 {
<a name="l05428"></a>05428   <span class="keywordflow">return</span> dev-&gt;<a class="code" href="struct__u8g__dev__t.html#a1ee078d6dfb228283ae687b6722a9ee1">com_fn</a>(u8g, <a class="code" href="u8glib__ex_8h.html#a4c4b2a86756c48511ee2d80fdce8fdc1">U8G_COM_MSG_INIT</a>, clk_cycle_time, NULL);
<a name="l05429"></a>05429 }
<a name="l05430"></a>05430 
<a name="l05431"></a><a class="code" href="u8glib__ex_8h.html#ac5d2984c1861d06a975df28f2fd75b1e">05431</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#ac5d2984c1861d06a975df28f2fd75b1e">u8g_StopCom</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev)
<a name="l05432"></a>05432 {
<a name="l05433"></a>05433   dev-&gt;<a class="code" href="struct__u8g__dev__t.html#a1ee078d6dfb228283ae687b6722a9ee1">com_fn</a>(u8g, <a class="code" href="u8glib__ex_8h.html#a225a41aaa3afd074315faf810d8c72b7">U8G_COM_MSG_STOP</a>, 0, NULL);
<a name="l05434"></a>05434 }
<a name="l05435"></a>05435 
<a name="l05436"></a>05436 <span class="comment">/* cs contains the chip number, which should be enabled */</span>
<a name="l05437"></a><a class="code" href="u8glib__ex_8h.html#a0c34aac881e5e41b85c0fa41a47f0685">05437</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a0c34aac881e5e41b85c0fa41a47f0685">u8g_SetChipSelect</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t cs)
<a name="l05438"></a>05438 {
<a name="l05439"></a>05439   dev-&gt;<a class="code" href="struct__u8g__dev__t.html#a1ee078d6dfb228283ae687b6722a9ee1">com_fn</a>(u8g, <a class="code" href="u8glib__ex_8h.html#ac5b6ded098abcb5de9ab579c2c278dec">U8G_COM_MSG_CHIP_SELECT</a>, cs, NULL);
<a name="l05440"></a>05440 }
<a name="l05441"></a>05441 
<a name="l05442"></a><a class="code" href="u8glib__ex_8h.html#a6c3640e87b4f87c787890ca4b2f477b0">05442</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a6c3640e87b4f87c787890ca4b2f477b0">u8g_SetResetLow</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev)
<a name="l05443"></a>05443 {
<a name="l05444"></a>05444   dev-&gt;<a class="code" href="struct__u8g__dev__t.html#a1ee078d6dfb228283ae687b6722a9ee1">com_fn</a>(u8g, <a class="code" href="u8glib__ex_8h.html#ae9e98c1cadea862056b3684ea79626c7">U8G_COM_MSG_RESET</a>, 0, NULL);
<a name="l05445"></a>05445 }
<a name="l05446"></a>05446 
<a name="l05447"></a><a class="code" href="u8glib__ex_8h.html#a588ac7f192ccdb49f55d57ea227424a9">05447</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a588ac7f192ccdb49f55d57ea227424a9">u8g_SetResetHigh</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev)
<a name="l05448"></a>05448 {
<a name="l05449"></a>05449   dev-&gt;<a class="code" href="struct__u8g__dev__t.html#a1ee078d6dfb228283ae687b6722a9ee1">com_fn</a>(u8g, <a class="code" href="u8glib__ex_8h.html#ae9e98c1cadea862056b3684ea79626c7">U8G_COM_MSG_RESET</a>, 1, NULL);
<a name="l05450"></a>05450 }
<a name="l05451"></a>05451 
<a name="l05452"></a>05452 
<a name="l05453"></a><a class="code" href="u8glib__ex_8h.html#ad89fac2c682a837406a1b86e7d7c2073">05453</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#ad89fac2c682a837406a1b86e7d7c2073">u8g_SetAddress</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t address)
<a name="l05454"></a>05454 {
<a name="l05455"></a>05455   dev-&gt;<a class="code" href="struct__u8g__dev__t.html#a1ee078d6dfb228283ae687b6722a9ee1">com_fn</a>(u8g, <a class="code" href="u8glib__ex_8h.html#a707738f973a52f84081b6e8243f24b93">U8G_COM_MSG_ADDRESS</a>, address, NULL);
<a name="l05456"></a>05456 }
<a name="l05457"></a>05457 
<a name="l05458"></a><a class="code" href="u8glib__ex_8h.html#af12049f27935eec7a9b5930f1f0f84a3">05458</a> uint8_t <a class="code" href="u8glib__ex_8h.html#af12049f27935eec7a9b5930f1f0f84a3">u8g_WriteByte</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t val)
<a name="l05459"></a>05459 {
<a name="l05460"></a>05460   <span class="keywordflow">return</span> dev-&gt;<a class="code" href="struct__u8g__dev__t.html#a1ee078d6dfb228283ae687b6722a9ee1">com_fn</a>(u8g, <a class="code" href="u8glib__ex_8h.html#a6554b69b48d471383ab4742e0646faa7">U8G_COM_MSG_WRITE_BYTE</a>, val, NULL);
<a name="l05461"></a>05461 }
<a name="l05462"></a>05462 
<a name="l05463"></a><a class="code" href="u8glib__ex_8h.html#a1a25a189f85f6d89161d63a14da5f044">05463</a> uint8_t <a class="code" href="u8glib__ex_8h.html#a1a25a189f85f6d89161d63a14da5f044">u8g_WriteSequence</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t cnt, uint8_t *seq)
<a name="l05464"></a>05464 {
<a name="l05465"></a>05465   <span class="keywordflow">return</span> dev-&gt;<a class="code" href="struct__u8g__dev__t.html#a1ee078d6dfb228283ae687b6722a9ee1">com_fn</a>(u8g, <a class="code" href="u8glib__ex_8h.html#abee7a3415b37581dc37a340be97ecccc">U8G_COM_MSG_WRITE_SEQ</a>, cnt, seq);
<a name="l05466"></a>05466 }
<a name="l05467"></a>05467 
<a name="l05468"></a><a class="code" href="u8glib__ex_8h.html#af4883c97da1748abdf8ccc9c93f2501d">05468</a> uint8_t <a class="code" href="u8glib__ex_8h.html#af4883c97da1748abdf8ccc9c93f2501d">u8g_WriteSequenceP</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t cnt, <span class="keyword">const</span> uint8_t *seq)
<a name="l05469"></a>05469 {
<a name="l05470"></a>05470   <span class="keywordflow">return</span> dev-&gt;<a class="code" href="struct__u8g__dev__t.html#a1ee078d6dfb228283ae687b6722a9ee1">com_fn</a>(u8g, <a class="code" href="u8glib__ex_8h.html#a913bfd86af5347f33acb243e9d40743c">U8G_COM_MSG_WRITE_SEQ_P</a>, cnt, (<span class="keywordtype">void</span> *)seq);
<a name="l05471"></a>05471 }
<a name="l05472"></a>05472 
<a name="l05473"></a>05473 <span class="comment">/*</span>
<a name="l05474"></a>05474 <span class="comment">  sequence := { direct_value | escape_sequence }</span>
<a name="l05475"></a>05475 <span class="comment">  direct_value := 0..254</span>
<a name="l05476"></a>05476 <span class="comment">  escape_sequence := value_255 | sequence_end | delay | adr | cs | not_used</span>
<a name="l05477"></a>05477 <span class="comment">  value_255 := 255 255</span>
<a name="l05478"></a>05478 <span class="comment">  sequence_end = 255 254</span>
<a name="l05479"></a>05479 <span class="comment">  delay := 255 0..127</span>
<a name="l05480"></a>05480 <span class="comment">  adr := 255 0x0e0 .. 0x0ef</span>
<a name="l05481"></a>05481 <span class="comment">  cs := 255 0x0d0 .. 0x0df</span>
<a name="l05482"></a>05482 <span class="comment">  not_used := 255 101..254</span>
<a name="l05483"></a>05483 <span class="comment"></span>
<a name="l05484"></a>05484 <span class="comment">#define U8G_ESC_DLY(x) 255, ((x) &amp; 0x7f)</span>
<a name="l05485"></a>05485 <span class="comment">#define U8G_ESC_CS(x) 255, (0xd0 | ((x)&amp;0x0f))</span>
<a name="l05486"></a>05486 <span class="comment">#define U8G_ESC_ADR(x) 255, (0xe0 | ((x)&amp;0x0f))</span>
<a name="l05487"></a>05487 <span class="comment">#define U8G_ESC_VCC(x) 255, (0xbe | ((x)&amp;0x01))</span>
<a name="l05488"></a>05488 <span class="comment">#define U8G_ESC_END 255, 254</span>
<a name="l05489"></a>05489 <span class="comment">#define U8G_ESC_255 255, 255</span>
<a name="l05490"></a>05490 <span class="comment">#define U8G_ESC_RST(x) 255, (0xc0 | ((x)&amp;0x0f))</span>
<a name="l05491"></a>05491 <span class="comment"></span>
<a name="l05492"></a>05492 <span class="comment">*/</span>
<a name="l05493"></a><a class="code" href="u8glib__ex_8h.html#ab0e35a2c1e15e3dc98f0637ce8129744">05493</a> uint8_t <a class="code" href="u8glib__ex_8h.html#ab0e35a2c1e15e3dc98f0637ce8129744">u8g_WriteEscSeqP</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, <span class="keyword">const</span> uint8_t *esc_seq)
<a name="l05494"></a>05494 {
<a name="l05495"></a>05495   uint8_t is_escape = 0;
<a name="l05496"></a>05496   uint8_t value;
<a name="l05497"></a>05497   <span class="keywordflow">for</span>(;;)
<a name="l05498"></a>05498   {
<a name="l05499"></a>05499     value = <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>(esc_seq);
<a name="l05500"></a>05500     <span class="keywordflow">if</span> ( is_escape == 0 )
<a name="l05501"></a>05501     {
<a name="l05502"></a>05502       <span class="keywordflow">if</span> ( value != 255 )
<a name="l05503"></a>05503       {
<a name="l05504"></a>05504         <span class="keywordflow">if</span> ( <a class="code" href="u8glib__ex_8h.html#af12049f27935eec7a9b5930f1f0f84a3">u8g_WriteByte</a>(u8g, dev, value) == 0 )
<a name="l05505"></a>05505           <span class="keywordflow">return</span> 0;
<a name="l05506"></a>05506       }
<a name="l05507"></a>05507       <span class="keywordflow">else</span>
<a name="l05508"></a>05508       {
<a name="l05509"></a>05509         is_escape = 1;
<a name="l05510"></a>05510       }
<a name="l05511"></a>05511     }
<a name="l05512"></a>05512     <span class="keywordflow">else</span>
<a name="l05513"></a>05513     {
<a name="l05514"></a>05514       <span class="keywordflow">if</span> ( value == 255 )
<a name="l05515"></a>05515       {
<a name="l05516"></a>05516         <span class="keywordflow">if</span> ( <a class="code" href="u8glib__ex_8h.html#af12049f27935eec7a9b5930f1f0f84a3">u8g_WriteByte</a>(u8g, dev, value) == 0 )
<a name="l05517"></a>05517           <span class="keywordflow">return</span> 0;
<a name="l05518"></a>05518       }
<a name="l05519"></a>05519       <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( value == 254 )
<a name="l05520"></a>05520       {
<a name="l05521"></a>05521         <span class="keywordflow">break</span>;
<a name="l05522"></a>05522       }
<a name="l05523"></a>05523       <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( value &gt;= 0x0f0 )
<a name="l05524"></a>05524       {
<a name="l05525"></a>05525         <span class="comment">/* not yet used, do nothing */</span>
<a name="l05526"></a>05526       }
<a name="l05527"></a>05527       <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( value &gt;= 0xe0  )
<a name="l05528"></a>05528       {
<a name="l05529"></a>05529         <a class="code" href="u8glib__ex_8h.html#ad89fac2c682a837406a1b86e7d7c2073">u8g_SetAddress</a>(u8g, dev, value &amp; 0x0f);
<a name="l05530"></a>05530       }
<a name="l05531"></a>05531       <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( value &gt;= 0xd0 )
<a name="l05532"></a>05532       {
<a name="l05533"></a>05533         <a class="code" href="u8glib__ex_8h.html#a0c34aac881e5e41b85c0fa41a47f0685">u8g_SetChipSelect</a>(u8g, dev, value &amp; 0x0f);
<a name="l05534"></a>05534       }
<a name="l05535"></a>05535       <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( value &gt;= 0xc0 )
<a name="l05536"></a>05536       {
<a name="l05537"></a>05537         <a class="code" href="u8glib__ex_8h.html#a6c3640e87b4f87c787890ca4b2f477b0">u8g_SetResetLow</a>(u8g, dev);
<a name="l05538"></a>05538         value &amp;= 0x0f;
<a name="l05539"></a>05539         value &lt;&lt;= 4;
<a name="l05540"></a>05540         value+=2;
<a name="l05541"></a>05541         <a class="code" href="u8glib__ex_8h.html#af204c498d509e70715337a419044c22f">u8g_Delay</a>(value);
<a name="l05542"></a>05542         <a class="code" href="u8glib__ex_8h.html#a588ac7f192ccdb49f55d57ea227424a9">u8g_SetResetHigh</a>(u8g, dev);
<a name="l05543"></a>05543         <a class="code" href="u8glib__ex_8h.html#af204c498d509e70715337a419044c22f">u8g_Delay</a>(value);
<a name="l05544"></a>05544       }
<a name="l05545"></a>05545       <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( value &gt;= 0xbe )
<a name="l05546"></a>05546       {
<a name="l05547"></a>05547         <span class="comment">/* not yet implemented */</span>
<a name="l05548"></a>05548         <span class="comment">/* u8g_SetVCC(u8g, dev, value &amp; 0x01); */</span>
<a name="l05549"></a>05549       }
<a name="l05550"></a>05550       <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( value &lt;= 127 )
<a name="l05551"></a>05551       {
<a name="l05552"></a>05552         <a class="code" href="u8glib__ex_8h.html#af204c498d509e70715337a419044c22f">u8g_Delay</a>(value);
<a name="l05553"></a>05553       }
<a name="l05554"></a>05554       is_escape = 0;
<a name="l05555"></a>05555     }
<a name="l05556"></a>05556     esc_seq++;
<a name="l05557"></a>05557   }
<a name="l05558"></a>05558   <span class="keywordflow">return</span> 1;
<a name="l05559"></a>05559 }
<a name="l05560"></a>05560 
<a name="l05561"></a>05561 
<a name="l05562"></a>05562 <span class="comment">// ============ u8g_delay.c ===========</span>
<a name="l05563"></a>05563 <span class="comment">/*</span>
<a name="l05564"></a>05564 <span class="comment"></span>
<a name="l05565"></a>05565 <span class="comment">  u8g_delay.c</span>
<a name="l05566"></a>05566 <span class="comment"></span>
<a name="l05567"></a>05567 <span class="comment">  Universal 8bit Graphics Library</span>
<a name="l05568"></a>05568 <span class="comment"></span>
<a name="l05569"></a>05569 <span class="comment">  Copyright (c) 2011, olikraus@gmail.com</span>
<a name="l05570"></a>05570 <span class="comment">  All rights reserved.</span>
<a name="l05571"></a>05571 <span class="comment"></span>
<a name="l05572"></a>05572 <span class="comment">  Redistribution and use in source and binary forms, with or without modification,</span>
<a name="l05573"></a>05573 <span class="comment">  are permitted provided that the following conditions are met:</span>
<a name="l05574"></a>05574 <span class="comment"></span>
<a name="l05575"></a>05575 <span class="comment">  * Redistributions of source code must retain the above copyright notice, this list</span>
<a name="l05576"></a>05576 <span class="comment">    of conditions and the following disclaimer.</span>
<a name="l05577"></a>05577 <span class="comment"></span>
<a name="l05578"></a>05578 <span class="comment">  * Redistributions in binary form must reproduce the above copyright notice, this</span>
<a name="l05579"></a>05579 <span class="comment">    list of conditions and the following disclaimer in the documentation and/or other</span>
<a name="l05580"></a>05580 <span class="comment">    materials provided with the distribution.</span>
<a name="l05581"></a>05581 <span class="comment"></span>
<a name="l05582"></a>05582 <span class="comment">  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND</span>
<a name="l05583"></a>05583 <span class="comment">  CONTRIBUTORS &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES,</span>
<a name="l05584"></a>05584 <span class="comment">  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF</span>
<a name="l05585"></a>05585 <span class="comment">  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span>
<a name="l05586"></a>05586 <span class="comment">  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR</span>
<a name="l05587"></a>05587 <span class="comment">  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</span>
<a name="l05588"></a>05588 <span class="comment">  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT</span>
<a name="l05589"></a>05589 <span class="comment">  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span>
<a name="l05590"></a>05590 <span class="comment">  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span>
<a name="l05591"></a>05591 <span class="comment">  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,</span>
<a name="l05592"></a>05592 <span class="comment">  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span>
<a name="l05593"></a>05593 <span class="comment">  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF</span>
<a name="l05594"></a>05594 <span class="comment">  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span>
<a name="l05595"></a>05595 <span class="comment"></span>
<a name="l05596"></a>05596 <span class="comment"></span>
<a name="l05597"></a>05597 <span class="comment">  void u8g_Delay(uint16_t val)          Delay by &quot;val&quot; milliseconds</span>
<a name="l05598"></a>05598 <span class="comment">  void u8g_MicroDelay(void)             Delay be one microsecond</span>
<a name="l05599"></a>05599 <span class="comment">  void u8g_10MicroDelay(void)   Delay by 10 microseconds</span>
<a name="l05600"></a>05600 <span class="comment"></span>
<a name="l05601"></a>05601 <span class="comment"></span>
<a name="l05602"></a>05602 <span class="comment">*/</span>
<a name="l05603"></a>05603 
<a name="l05604"></a>05604 
<a name="l05605"></a>05605 
<a name="l05606"></a>05606 <span class="comment">/*==== Part 1: Derive suitable delay procedure ====*/</span>
<a name="l05607"></a>05607 
<a name="l05608"></a>05608 <span class="preprocessor">#if defined(ARDUINO)</span>
<a name="l05609"></a>05609 <span class="preprocessor"></span>
<a name="l05610"></a>05610 <span class="preprocessor">#  if defined(__AVR__)</span>
<a name="l05611"></a>05611 <span class="preprocessor"></span><span class="preprocessor">#    define USE_AVR_DELAY</span>
<a name="l05612"></a>05612 <span class="preprocessor"></span><span class="preprocessor">#  elif defined(__PIC32MX)</span>
<a name="l05613"></a>05613 <span class="preprocessor"></span><span class="preprocessor">#    define USE_PIC32_DELAY</span>
<a name="l05614"></a>05614 <span class="preprocessor"></span><span class="preprocessor">#  elif defined(__arm__)                </span><span class="comment">/* Arduino Due */</span>
<a name="l05615"></a>05615 <span class="preprocessor">#    define USE_ARDUINO_DELAY</span>
<a name="l05616"></a>05616 <span class="preprocessor"></span><span class="preprocessor">#  else</span>
<a name="l05617"></a>05617 <span class="preprocessor"></span><span class="preprocessor">#    define USE_ARDUINO_DELAY</span>
<a name="l05618"></a>05618 <span class="preprocessor"></span><span class="preprocessor">#  endif</span>
<a name="l05619"></a>05619 <span class="preprocessor"></span><span class="preprocessor">#elif defined(__AVR__)</span>
<a name="l05620"></a>05620 <span class="preprocessor"></span><span class="preprocessor">#  define USE_AVR_DELAY</span>
<a name="l05621"></a>05621 <span class="preprocessor"></span><span class="preprocessor">#elif defined(__18CXX)</span>
<a name="l05622"></a>05622 <span class="preprocessor"></span><span class="preprocessor">#  define USE_PIC18_DELAY</span>
<a name="l05623"></a>05623 <span class="preprocessor"></span><span class="preprocessor">#elif defined(__arm__)</span>
<a name="l05624"></a>05624 <span class="preprocessor"></span><span class="comment">/* do not define anything, all procedures are expected to be defined outside u8glib */</span>
<a name="l05625"></a>05625 
<a name="l05626"></a>05626 <span class="comment">/*</span>
<a name="l05627"></a>05627 <span class="comment">void u8g_Delay(uint16_t val);</span>
<a name="l05628"></a>05628 <span class="comment">void u8g_MicroDelay(void);</span>
<a name="l05629"></a>05629 <span class="comment">void u8g_10MicroDelay(void);</span>
<a name="l05630"></a>05630 <span class="comment">*/</span>
<a name="l05631"></a>05631 
<a name="l05632"></a>05632 <span class="preprocessor">#else</span>
<a name="l05633"></a><a class="code" href="u8glib__ex_8h.html#abc7d101347e66a7c2235863fbe4210e2">05633</a> <span class="preprocessor"></span><span class="preprocessor">#  define USE_DUMMY_DELAY</span>
<a name="l05634"></a>05634 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l05635"></a>05635 <span class="preprocessor"></span>
<a name="l05636"></a>05636 
<a name="l05637"></a>05637 
<a name="l05638"></a>05638 <span class="comment">/*==== Part 2: Definition of the delay procedures ====*/</span>
<a name="l05639"></a>05639 
<a name="l05640"></a>05640 <span class="comment">/*== AVR Delay ==*/</span>
<a name="l05641"></a>05641 
<a name="l05642"></a>05642 <span class="preprocessor">#if defined(USE_AVR_DELAY)</span>
<a name="l05643"></a>05643 <span class="preprocessor"></span><span class="preprocessor">#include &lt;avr/interrupt.h&gt;</span>
<a name="l05644"></a>05644 <span class="preprocessor">#include &lt;avr/io.h&gt;</span>
<a name="l05645"></a>05645 <span class="preprocessor">#include &lt;util/delay.h&gt;</span>
<a name="l05646"></a>05646 
<a name="l05647"></a>05647 <span class="comment">/*</span>
<a name="l05648"></a>05648 <span class="comment">  Delay by the provided number of milliseconds.</span>
<a name="l05649"></a>05649 <span class="comment">  Thus, a 16 bit value will allow a delay of 0..65 seconds</span>
<a name="l05650"></a>05650 <span class="comment">  Makes use of the _delay_loop_2</span>
<a name="l05651"></a>05651 <span class="comment"></span>
<a name="l05652"></a>05652 <span class="comment">  _delay_loop_2 will do a delay of n * 4 prozessor cycles.</span>
<a name="l05653"></a>05653 <span class="comment">  with f = F_CPU cycles per second,</span>
<a name="l05654"></a>05654 <span class="comment">  n = f / (1000 * 4 )</span>
<a name="l05655"></a>05655 <span class="comment">  with f = 16000000 the result is 4000</span>
<a name="l05656"></a>05656 <span class="comment">  with f = 1000000 the result is 250</span>
<a name="l05657"></a>05657 <span class="comment"></span>
<a name="l05658"></a>05658 <span class="comment">  the millisec loop, gcc requires the following overhead:</span>
<a name="l05659"></a>05659 <span class="comment">  - movev 1</span>
<a name="l05660"></a>05660 <span class="comment">  - subwi 2x2</span>
<a name="l05661"></a>05661 <span class="comment">  - bne i 2</span>
<a name="l05662"></a>05662 <span class="comment">  ==&gt; 7 cycles</span>
<a name="l05663"></a>05663 <span class="comment">  ==&gt; must be devided by 4, rounded up 7/4 = 2</span>
<a name="l05664"></a>05664 <span class="comment">*/</span>
<a name="l05665"></a>05665 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#af204c498d509e70715337a419044c22f">u8g_Delay</a>(uint16_t val)
<a name="l05666"></a>05666 {
<a name="l05667"></a>05667   <span class="comment">/* old version did a call to the arduino lib: delay(val); */</span>
<a name="l05668"></a>05668   <span class="keywordflow">while</span>( val != 0 )
<a name="l05669"></a>05669   {
<a name="l05670"></a>05670     _delay_loop_2( (F_CPU / 4000 ) -2);
<a name="l05671"></a>05671     val--;
<a name="l05672"></a>05672   }
<a name="l05673"></a>05673 }
<a name="l05674"></a>05674 
<a name="l05675"></a>05675 <span class="comment">/* delay by one micro second */</span>
<a name="l05676"></a>05676 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a1920961449fcdb3579c6c7e3d6e41877">u8g_MicroDelay</a>(<span class="keywordtype">void</span>)
<a name="l05677"></a>05677 {
<a name="l05678"></a>05678 <span class="preprocessor">#if (F_CPU / 4000000 ) &gt; 0</span>
<a name="l05679"></a>05679 <span class="preprocessor"></span>  _delay_loop_2( (F_CPU / 4000000 ) );
<a name="l05680"></a>05680 <span class="preprocessor">#endif</span>
<a name="l05681"></a>05681 <span class="preprocessor"></span>}
<a name="l05682"></a>05682 
<a name="l05683"></a>05683 <span class="comment">/* delay by 10 micro seconds */</span>
<a name="l05684"></a>05684 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#ad7fff136315eef65dcb8939cfaf7b30e">u8g_10MicroDelay</a>(<span class="keywordtype">void</span>)
<a name="l05685"></a>05685 {
<a name="l05686"></a>05686 <span class="preprocessor">#if (F_CPU / 400000 ) &gt; 0</span>
<a name="l05687"></a>05687 <span class="preprocessor"></span>  _delay_loop_2( (F_CPU / 400000 ) );
<a name="l05688"></a>05688 <span class="preprocessor">#endif</span>
<a name="l05689"></a>05689 <span class="preprocessor"></span>}
<a name="l05690"></a>05690 
<a name="l05691"></a>05691 <span class="preprocessor">#endif</span>
<a name="l05692"></a>05692 <span class="preprocessor"></span>
<a name="l05693"></a>05693 
<a name="l05694"></a>05694 <span class="comment">/*== Delay for PIC18 (not tested) ==*/</span>
<a name="l05695"></a>05695 
<a name="l05696"></a>05696 <span class="preprocessor">#if defined(USE_PIC18_DELAY)</span>
<a name="l05697"></a>05697 <span class="preprocessor"></span><span class="preprocessor">#include &lt;delays.h&gt;</span>
<a name="l05698"></a>05698 <span class="preprocessor">#define GetSystemClock()                (64000000ul)      // Hz</span>
<a name="l05699"></a>05699 <span class="preprocessor"></span><span class="preprocessor">#define GetInstructionClock()   (GetSystemClock()/4)</span>
<a name="l05700"></a>05700 <span class="preprocessor"></span>
<a name="l05701"></a>05701 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#af204c498d509e70715337a419044c22f">u8g_Delay</a>(uint16_t val)
<a name="l05702"></a>05702 {<span class="comment">/*</span>
<a name="l05703"></a>05703 <span class="comment">        unsigned int _iTemp = (val);</span>
<a name="l05704"></a>05704 <span class="comment">        while(_iTemp--)</span>
<a name="l05705"></a>05705 <span class="comment">                Delay1KTCYx((GetInstructionClock()+999999)/1000000);</span>
<a name="l05706"></a>05706 <span class="comment">                */</span>
<a name="l05707"></a>05707 }
<a name="l05708"></a>05708 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a1920961449fcdb3579c6c7e3d6e41877">u8g_MicroDelay</a>(<span class="keywordtype">void</span>)
<a name="l05709"></a>05709 {
<a name="l05710"></a>05710   <span class="comment">/* not implemented */</span>
<a name="l05711"></a>05711 }
<a name="l05712"></a>05712 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#ad7fff136315eef65dcb8939cfaf7b30e">u8g_10MicroDelay</a>(<span class="keywordtype">void</span>)
<a name="l05713"></a>05713 {
<a name="l05714"></a>05714   <span class="comment">/* not implemented */</span>
<a name="l05715"></a>05715 }
<a name="l05716"></a>05716 <span class="preprocessor">#endif</span>
<a name="l05717"></a>05717 <span class="preprocessor"></span>
<a name="l05718"></a>05718 
<a name="l05719"></a>05719 <span class="comment">/*== Arduino Delay ==*/</span>
<a name="l05720"></a>05720 <span class="preprocessor">#if defined(USE_ARDUINO_DELAY)</span>
<a name="l05721"></a>05721 <span class="preprocessor"></span><span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#af204c498d509e70715337a419044c22f">u8g_Delay</a>(uint16_t val)
<a name="l05722"></a>05722 {
<a name="l05723"></a>05723 <span class="preprocessor">#if defined(__arm__)</span>
<a name="l05724"></a>05724 <span class="preprocessor"></span>        delayMicroseconds((uint32_t)val*(uint32_t)1000);
<a name="l05725"></a>05725 <span class="preprocessor">#else</span>
<a name="l05726"></a>05726 <span class="preprocessor"></span>        delay(val);
<a name="l05727"></a>05727 <span class="preprocessor">#endif</span>
<a name="l05728"></a>05728 <span class="preprocessor"></span>}
<a name="l05729"></a>05729 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a1920961449fcdb3579c6c7e3d6e41877">u8g_MicroDelay</a>(<span class="keywordtype">void</span>)
<a name="l05730"></a>05730 {
<a name="l05731"></a>05731         delayMicroseconds(1);
<a name="l05732"></a>05732 }
<a name="l05733"></a>05733 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#ad7fff136315eef65dcb8939cfaf7b30e">u8g_10MicroDelay</a>(<span class="keywordtype">void</span>)
<a name="l05734"></a>05734 {
<a name="l05735"></a>05735         delayMicroseconds(10);
<a name="l05736"></a>05736 }
<a name="l05737"></a>05737 <span class="preprocessor">#endif</span>
<a name="l05738"></a>05738 <span class="preprocessor"></span>
<a name="l05739"></a>05739 <span class="preprocessor">#if defined(USE_PIC32_DELAY)</span>
<a name="l05740"></a>05740 <span class="preprocessor"></span><span class="comment">/*</span>
<a name="l05741"></a>05741 <span class="comment">  Assume chipkit here with F_CPU correctly defined</span>
<a name="l05742"></a>05742 <span class="comment">  The problem was, that u8g_Delay() is called within the constructor.</span>
<a name="l05743"></a>05743 <span class="comment">  It seems that the chipkit is not fully setup at this time, so a</span>
<a name="l05744"></a>05744 <span class="comment">  call to delay() will not work. So here is my own implementation.</span>
<a name="l05745"></a>05745 <span class="comment"></span>
<a name="l05746"></a>05746 <span class="comment">*/</span>
<a name="l05747"></a>05747 <span class="preprocessor">#define CPU_COUNTS_PER_SECOND (F_CPU/2UL)</span>
<a name="l05748"></a>05748 <span class="preprocessor"></span><span class="preprocessor">#define TICKS_PER_MILLISECOND  (CPU_COUNTS_PER_SECOND/1000UL)</span>
<a name="l05749"></a>05749 <span class="preprocessor"></span><span class="preprocessor">#include &quot;plib.h&quot;</span>
<a name="l05750"></a>05750 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#af204c498d509e70715337a419044c22f">u8g_Delay</a>(uint16_t val)
<a name="l05751"></a>05751 {
<a name="l05752"></a>05752         uint32_t d;
<a name="l05753"></a>05753         uint32_t s;
<a name="l05754"></a>05754         d = val;
<a name="l05755"></a>05755         d *= TICKS_PER_MILLISECOND;
<a name="l05756"></a>05756         s = ReadCoreTimer();
<a name="l05757"></a>05757         <span class="keywordflow">while</span> ( (uint32_t)(ReadCoreTimer() - s) &lt; d )
<a name="l05758"></a>05758                 ;
<a name="l05759"></a>05759 }
<a name="l05760"></a>05760 
<a name="l05761"></a>05761 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a1920961449fcdb3579c6c7e3d6e41877">u8g_MicroDelay</a>(<span class="keywordtype">void</span>)
<a name="l05762"></a>05762 {
<a name="l05763"></a>05763         uint32_t d;
<a name="l05764"></a>05764         uint32_t s;
<a name="l05765"></a>05765         d = TICKS_PER_MILLISECOND/1000;
<a name="l05766"></a>05766         s = ReadCoreTimer();
<a name="l05767"></a>05767         <span class="keywordflow">while</span> ( (uint32_t)(ReadCoreTimer() - s) &lt; d )
<a name="l05768"></a>05768                 ;
<a name="l05769"></a>05769 }
<a name="l05770"></a>05770 
<a name="l05771"></a>05771 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#ad7fff136315eef65dcb8939cfaf7b30e">u8g_10MicroDelay</a>(<span class="keywordtype">void</span>)
<a name="l05772"></a>05772 {
<a name="l05773"></a>05773         uint32_t d;
<a name="l05774"></a>05774         uint32_t s;
<a name="l05775"></a>05775         d = TICKS_PER_MILLISECOND/100;
<a name="l05776"></a>05776         s = ReadCoreTimer();
<a name="l05777"></a>05777         <span class="keywordflow">while</span> ( (uint32_t)(ReadCoreTimer() - s) &lt; d )
<a name="l05778"></a>05778                 ;
<a name="l05779"></a>05779 }
<a name="l05780"></a>05780 
<a name="l05781"></a>05781 <span class="preprocessor">#endif</span>
<a name="l05782"></a>05782 <span class="preprocessor"></span>
<a name="l05783"></a>05783 <span class="comment">/*== Any other systems: Dummy Delay ==*/</span>
<a name="l05784"></a>05784 <span class="preprocessor">#if defined(USE_DUMMY_DELAY)</span>
<a name="l05785"></a><a class="code" href="u8glib__ex_8h.html#af204c498d509e70715337a419044c22f">05785</a> <span class="preprocessor"></span><span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#af204c498d509e70715337a419044c22f">u8g_Delay</a>(uint16_t val)
<a name="l05786"></a>05786 {
<a name="l05787"></a>05787         <span class="comment">/* do not know how to delay... */</span>
<a name="l05788"></a>05788 }
<a name="l05789"></a><a class="code" href="u8glib__ex_8h.html#a1920961449fcdb3579c6c7e3d6e41877">05789</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a1920961449fcdb3579c6c7e3d6e41877">u8g_MicroDelay</a>(<span class="keywordtype">void</span>)
<a name="l05790"></a>05790 {
<a name="l05791"></a>05791 }
<a name="l05792"></a><a class="code" href="u8glib__ex_8h.html#ad7fff136315eef65dcb8939cfaf7b30e">05792</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#ad7fff136315eef65dcb8939cfaf7b30e">u8g_10MicroDelay</a>(<span class="keywordtype">void</span>)
<a name="l05793"></a>05793 {
<a name="l05794"></a>05794 }
<a name="l05795"></a>05795 <span class="preprocessor">#endif</span>
<a name="l05796"></a>05796 <span class="preprocessor"></span>
<a name="l05797"></a>05797 
<a name="l05798"></a>05798 <span class="comment">// =============== u8g_state.c ================</span>
<a name="l05799"></a>05799 
<a name="l05800"></a>05800 <span class="comment">/*</span>
<a name="l05801"></a>05801 <span class="comment"></span>
<a name="l05802"></a>05802 <span class="comment">  u8g_state.c</span>
<a name="l05803"></a>05803 <span class="comment"></span>
<a name="l05804"></a>05804 <span class="comment">  backup and restore hardware state</span>
<a name="l05805"></a>05805 <span class="comment"></span>
<a name="l05806"></a>05806 <span class="comment">  Universal 8bit Graphics Library</span>
<a name="l05807"></a>05807 <span class="comment"></span>
<a name="l05808"></a>05808 <span class="comment">  Copyright (c) 2011, olikraus@gmail.com</span>
<a name="l05809"></a>05809 <span class="comment">  All rights reserved.</span>
<a name="l05810"></a>05810 <span class="comment"></span>
<a name="l05811"></a>05811 <span class="comment">  Redistribution and use in source and binary forms, with or without modification,</span>
<a name="l05812"></a>05812 <span class="comment">  are permitted provided that the following conditions are met:</span>
<a name="l05813"></a>05813 <span class="comment"></span>
<a name="l05814"></a>05814 <span class="comment">  * Redistributions of source code must retain the above copyright notice, this list</span>
<a name="l05815"></a>05815 <span class="comment">    of conditions and the following disclaimer.</span>
<a name="l05816"></a>05816 <span class="comment"></span>
<a name="l05817"></a>05817 <span class="comment">  * Redistributions in binary form must reproduce the above copyright notice, this</span>
<a name="l05818"></a>05818 <span class="comment">    list of conditions and the following disclaimer in the documentation and/or other</span>
<a name="l05819"></a>05819 <span class="comment">    materials provided with the distribution.</span>
<a name="l05820"></a>05820 <span class="comment"></span>
<a name="l05821"></a>05821 <span class="comment">  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND</span>
<a name="l05822"></a>05822 <span class="comment">  CONTRIBUTORS &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES,</span>
<a name="l05823"></a>05823 <span class="comment">  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF</span>
<a name="l05824"></a>05824 <span class="comment">  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span>
<a name="l05825"></a>05825 <span class="comment">  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR</span>
<a name="l05826"></a>05826 <span class="comment">  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</span>
<a name="l05827"></a>05827 <span class="comment">  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT</span>
<a name="l05828"></a>05828 <span class="comment">  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span>
<a name="l05829"></a>05829 <span class="comment">  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span>
<a name="l05830"></a>05830 <span class="comment">  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,</span>
<a name="l05831"></a>05831 <span class="comment">  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span>
<a name="l05832"></a>05832 <span class="comment">  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF</span>
<a name="l05833"></a>05833 <span class="comment">  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span>
<a name="l05834"></a>05834 <span class="comment"></span>
<a name="l05835"></a>05835 <span class="comment"></span>
<a name="l05836"></a>05836 <span class="comment">  state callback: backup env U8G_STATE_MSG_BACKUP_ENV</span>
<a name="l05837"></a>05837 <span class="comment">  device callback: DEV_MSG_INIT</span>
<a name="l05838"></a>05838 <span class="comment">  state callback: backup u8g U8G_STATE_MSG_BACKUP_U8G</span>
<a name="l05839"></a>05839 <span class="comment">  state callback: restore env U8G_STATE_MSG_RESTORE_ENV</span>
<a name="l05840"></a>05840 <span class="comment"></span>
<a name="l05841"></a>05841 <span class="comment">  state callback: backup env U8G_STATE_MSG_BACKUP_ENV</span>
<a name="l05842"></a>05842 <span class="comment">  state callback: retore u8g U8G_STATE_MSG_RESTORE_U8G</span>
<a name="l05843"></a>05843 <span class="comment">  DEV_MSG_PAGE_FIRST or DEV_MSG_PAGE_NEXT</span>
<a name="l05844"></a>05844 <span class="comment">  state callback: restore env U8G_STATE_MSG_RESTORE_ENV</span>
<a name="l05845"></a>05845 <span class="comment"></span>
<a name="l05846"></a>05846 <span class="comment">*/</span>
<a name="l05847"></a>05847 
<a name="l05848"></a>05848 
<a name="l05849"></a><a class="code" href="u8glib__ex_8h.html#a160dbf8f8df51ce7814374229365b430">05849</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a160dbf8f8df51ce7814374229365b430">u8g_state_dummy_cb</a>(uint8_t msg)
<a name="l05850"></a>05850 {
<a name="l05851"></a>05851   <span class="comment">/* the dummy procedure does nothing */</span>
<a name="l05852"></a>05852 }
<a name="l05853"></a>05853 
<a name="l05854"></a><a class="code" href="u8glib__ex_8h.html#a41a47ddacd5b62b6d80825514e61ad50">05854</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a41a47ddacd5b62b6d80825514e61ad50">u8g_SetHardwareBackup</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="u8glib__ex_8h.html#a6154f06b2cd313f4556ce76843acc4c6">u8g_state_cb</a> backup_cb)
<a name="l05855"></a>05855 {
<a name="l05856"></a>05856   u8g-&gt;<a class="code" href="struct__u8g__t.html#a9d000643a29eef68417259ea4aa24aef">state_cb</a> = backup_cb;
<a name="l05857"></a>05857   <span class="comment">/* in most cases the init message was already sent, so this will backup the */</span>
<a name="l05858"></a>05858   <span class="comment">/* current u8g state */</span>
<a name="l05859"></a>05859   backup_cb(<a class="code" href="u8glib__ex_8h.html#aa83792d253ddacb1b51825e110903316">U8G_STATE_MSG_BACKUP_U8G</a>);
<a name="l05860"></a>05860 }
<a name="l05861"></a>05861 
<a name="l05862"></a>05862 
<a name="l05863"></a>05863 <span class="comment">/*===============================================================*/</span>
<a name="l05864"></a>05864 <span class="comment">/* register variable for restoring interrupt state */</span>
<a name="l05865"></a>05865 
<a name="l05866"></a>05866 <span class="preprocessor">#if defined(__AVR__)</span>
<a name="l05867"></a>05867 <span class="preprocessor"></span>uint8_t global_SREG_backup;
<a name="l05868"></a>05868 <span class="preprocessor">#endif</span>
<a name="l05869"></a>05869 <span class="preprocessor"></span>
<a name="l05870"></a>05870 
<a name="l05871"></a>05871 
<a name="l05872"></a>05872 <span class="comment">/*===============================================================*/</span>
<a name="l05873"></a>05873 <span class="comment">/* AVR */</span>
<a name="l05874"></a>05874 
<a name="l05875"></a>05875 <span class="preprocessor">#if defined(__AVR__)</span>
<a name="l05876"></a>05876 <span class="preprocessor"></span><span class="preprocessor">#define U8G_ATMEGA_HW_SPI</span>
<a name="l05877"></a>05877 <span class="preprocessor"></span>
<a name="l05878"></a>05878 <span class="comment">/* remove the definition for attiny */</span>
<a name="l05879"></a>05879 <span class="preprocessor">#if __AVR_ARCH__ == 2</span>
<a name="l05880"></a>05880 <span class="preprocessor"></span><span class="preprocessor">#undef U8G_ATMEGA_HW_SPI</span>
<a name="l05881"></a>05881 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l05882"></a>05882 <span class="preprocessor"></span><span class="preprocessor">#if __AVR_ARCH__ == 25</span>
<a name="l05883"></a>05883 <span class="preprocessor"></span><span class="preprocessor">#undef U8G_ATMEGA_HW_SPI</span>
<a name="l05884"></a>05884 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l05885"></a>05885 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l05886"></a>05886 <span class="preprocessor"></span>
<a name="l05887"></a>05887 <span class="preprocessor">#if defined(U8G_ATMEGA_HW_SPI)</span>
<a name="l05888"></a>05888 <span class="preprocessor"></span><span class="preprocessor">#include &lt;avr/interrupt.h&gt;</span>
<a name="l05889"></a>05889 <span class="keyword">static</span> uint8_t u8g_state_avr_spi_memory[2];
<a name="l05890"></a>05890 
<a name="l05891"></a>05891 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a0924688efe7bcce4feabb21ca625a0be">u8g_backup_spi</a>(uint8_t msg)
<a name="l05892"></a>05892 {
<a name="l05893"></a>05893   <span class="keywordflow">if</span> ( <a class="code" href="u8glib__ex_8h.html#ab9165d48e0229232b7260effe895a695">U8G_STATE_MSG_IS_BACKUP</a>(msg) )
<a name="l05894"></a>05894   {
<a name="l05895"></a>05895     u8g_state_avr_spi_memory[<a class="code" href="u8glib__ex_8h.html#ad0a56274c4cf978d1d74d24c99d3d66d">U8G_STATE_MSG_GET_IDX</a>(msg)] = SPCR;
<a name="l05896"></a>05896   }
<a name="l05897"></a>05897   <span class="keywordflow">else</span>
<a name="l05898"></a>05898   {
<a name="l05899"></a>05899     uint8_t tmp = SREG;
<a name="l05900"></a>05900     cli();
<a name="l05901"></a>05901     SPCR = 0;
<a name="l05902"></a>05902     SPCR = u8g_state_avr_spi_memory[<a class="code" href="u8glib__ex_8h.html#ad0a56274c4cf978d1d74d24c99d3d66d">U8G_STATE_MSG_GET_IDX</a>(msg)];
<a name="l05903"></a>05903     SREG = tmp;
<a name="l05904"></a>05904   }
<a name="l05905"></a>05905 }
<a name="l05906"></a>05906 
<a name="l05907"></a>05907 <span class="preprocessor">#elif defined(ARDUINO) &amp;&amp; defined(__arm__)              // Arduino Due, maybe we should better check for __SAM3X8E__</span>
<a name="l05908"></a>05908 <span class="preprocessor"></span>
<a name="l05909"></a>05909 <span class="preprocessor">#include &quot;sam.h&quot;</span>
<a name="l05910"></a>05910 
<a name="l05911"></a>05911 <span class="keyword">struct </span>sam_backup_struct
<a name="l05912"></a>05912 {
<a name="l05913"></a>05913   uint32_t mr;
<a name="l05914"></a>05914   uint32_t sr;
<a name="l05915"></a>05915   uint32_t csr[4];
<a name="l05916"></a>05916 } sam_backup[2];
<a name="l05917"></a>05917 
<a name="l05918"></a>05918 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a0924688efe7bcce4feabb21ca625a0be">u8g_backup_spi</a>(uint8_t msg)
<a name="l05919"></a>05919 {
<a name="l05920"></a>05920   uint8_t idx = <a class="code" href="u8glib__ex_8h.html#ad0a56274c4cf978d1d74d24c99d3d66d">U8G_STATE_MSG_GET_IDX</a>(msg);
<a name="l05921"></a>05921   <span class="keywordflow">if</span> ( <a class="code" href="u8glib__ex_8h.html#ab9165d48e0229232b7260effe895a695">U8G_STATE_MSG_IS_BACKUP</a>(msg) )
<a name="l05922"></a>05922   {
<a name="l05923"></a>05923     sam_backup[idx].mr = SPI0-&gt;SPI_MR;
<a name="l05924"></a>05924     sam_backup[idx].sr = SPI0-&gt;SPI_SR;
<a name="l05925"></a>05925     sam_backup[idx].csr[0] = SPI0-&gt;SPI_CSR[0];
<a name="l05926"></a>05926     sam_backup[idx].csr[1] = SPI0-&gt;SPI_CSR[1];
<a name="l05927"></a>05927     sam_backup[idx].csr[2] = SPI0-&gt;SPI_CSR[2];
<a name="l05928"></a>05928     sam_backup[idx].csr[3] = SPI0-&gt;SPI_CSR[3];
<a name="l05929"></a>05929   }
<a name="l05930"></a>05930   <span class="keywordflow">else</span>
<a name="l05931"></a>05931   {
<a name="l05932"></a>05932     SPI0-&gt;SPI_MR = sam_backup[idx].mr;
<a name="l05933"></a>05933     SPI0-&gt;SPI_CSR[0] = sam_backup[idx].csr[0];
<a name="l05934"></a>05934     SPI0-&gt;SPI_CSR[1] = sam_backup[idx].csr[1];
<a name="l05935"></a>05935     SPI0-&gt;SPI_CSR[2] = sam_backup[idx].csr[2];
<a name="l05936"></a>05936     SPI0-&gt;SPI_CSR[3] = sam_backup[idx].csr[3];
<a name="l05937"></a>05937   }
<a name="l05938"></a>05938 }
<a name="l05939"></a>05939 
<a name="l05940"></a>05940 <span class="preprocessor">#else</span>
<a name="l05941"></a>05941 <span class="preprocessor"></span>
<a name="l05942"></a><a class="code" href="u8glib__ex_8h.html#a0924688efe7bcce4feabb21ca625a0be">05942</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a0924688efe7bcce4feabb21ca625a0be">u8g_backup_spi</a>(uint8_t msg)
<a name="l05943"></a>05943 {
<a name="l05944"></a>05944 }
<a name="l05945"></a>05945 
<a name="l05946"></a>05946 <span class="preprocessor">#endif</span>
<a name="l05947"></a>05947 <span class="preprocessor"></span>
<a name="l05948"></a>05948 <span class="comment">// =========== u8g_pb8h1.c ==============</span>
<a name="l05949"></a>05949 
<a name="l05950"></a>05950 <span class="comment">/*</span>
<a name="l05951"></a>05951 <span class="comment"></span>
<a name="l05952"></a>05952 <span class="comment">  u8g_pb8h1.c</span>
<a name="l05953"></a>05953 <span class="comment"></span>
<a name="l05954"></a>05954 <span class="comment">  8bit height monochrom (1 bit) page buffer</span>
<a name="l05955"></a>05955 <span class="comment">  byte has horizontal orientation</span>
<a name="l05956"></a>05956 <span class="comment"></span>
<a name="l05957"></a>05957 <span class="comment">  Universal 8bit Graphics Library</span>
<a name="l05958"></a>05958 <span class="comment"></span>
<a name="l05959"></a>05959 <span class="comment">  Copyright (c) 2011, olikraus@gmail.com</span>
<a name="l05960"></a>05960 <span class="comment">  All rights reserved.</span>
<a name="l05961"></a>05961 <span class="comment"></span>
<a name="l05962"></a>05962 <span class="comment">  Redistribution and use in source and binary forms, with or without modification,</span>
<a name="l05963"></a>05963 <span class="comment">  are permitted provided that the following conditions are met:</span>
<a name="l05964"></a>05964 <span class="comment"></span>
<a name="l05965"></a>05965 <span class="comment">  * Redistributions of source code must retain the above copyright notice, this list</span>
<a name="l05966"></a>05966 <span class="comment">    of conditions and the following disclaimer.</span>
<a name="l05967"></a>05967 <span class="comment"></span>
<a name="l05968"></a>05968 <span class="comment">  * Redistributions in binary form must reproduce the above copyright notice, this</span>
<a name="l05969"></a>05969 <span class="comment">    list of conditions and the following disclaimer in the documentation and/or other</span>
<a name="l05970"></a>05970 <span class="comment">    materials provided with the distribution.</span>
<a name="l05971"></a>05971 <span class="comment"></span>
<a name="l05972"></a>05972 <span class="comment">  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND</span>
<a name="l05973"></a>05973 <span class="comment">  CONTRIBUTORS &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES,</span>
<a name="l05974"></a>05974 <span class="comment">  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF</span>
<a name="l05975"></a>05975 <span class="comment">  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span>
<a name="l05976"></a>05976 <span class="comment">  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR</span>
<a name="l05977"></a>05977 <span class="comment">  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</span>
<a name="l05978"></a>05978 <span class="comment">  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT</span>
<a name="l05979"></a>05979 <span class="comment">  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span>
<a name="l05980"></a>05980 <span class="comment">  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span>
<a name="l05981"></a>05981 <span class="comment">  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,</span>
<a name="l05982"></a>05982 <span class="comment">  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span>
<a name="l05983"></a>05983 <span class="comment">  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF</span>
<a name="l05984"></a>05984 <span class="comment">  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span>
<a name="l05985"></a>05985 <span class="comment"></span>
<a name="l05986"></a>05986 <span class="comment"></span>
<a name="l05987"></a>05987 <span class="comment">  total buffer size is limited to 256 bytes because of the calculation inside the set pixel procedure</span>
<a name="l05988"></a>05988 <span class="comment"></span>
<a name="l05989"></a>05989 <span class="comment">  23. Sep 2012: Bug with down procedure, see FPS 1st page --&gt; fixed (bug located in u8g_clip.c)</span>
<a name="l05990"></a>05990 <span class="comment"></span>
<a name="l05991"></a>05991 <span class="comment">*/</span>
<a name="l05992"></a>05992 
<a name="l05993"></a>05993 <span class="preprocessor">#include &lt;string.h&gt;</span>
<a name="l05994"></a>05994 
<a name="l05995"></a>05995 <span class="preprocessor">#ifdef __unix__</span>
<a name="l05996"></a>05996 <span class="preprocessor"></span><span class="preprocessor">#include &lt;assert.h&gt;</span>
<a name="l05997"></a>05997 <span class="preprocessor">#endif</span>
<a name="l05998"></a>05998 <span class="preprocessor"></span>
<a name="l05999"></a>05999 <span class="comment">/* NEW_CODE disabled, because the performance increase was too slow and not worth compared */</span>
<a name="l06000"></a>06000 <span class="comment">/* to the increase of code size */</span>
<a name="l06001"></a>06001 <span class="comment">/* #define NEW_CODE */</span>
<a name="l06002"></a>06002 
<a name="l06003"></a>06003 <span class="preprocessor">#ifdef __unix__</span>
<a name="l06004"></a>06004 <span class="preprocessor"></span><span class="keywordtype">void</span> *u8g_buf_lower_limit;
<a name="l06005"></a>06005 <span class="keywordtype">void</span> *u8g_buf_upper_limit;
<a name="l06006"></a>06006 <span class="preprocessor">#endif</span>
<a name="l06007"></a>06007 <span class="preprocessor"></span>
<a name="l06008"></a>06008 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a07d1ceb84bda26efa3b8c973aec24761">u8g_pb8h1_Init</a>(<a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> *b, <span class="keywordtype">void</span> *buf, u8g_uint_t width) <a class="code" href="u8glib__ex_8h.html#a4bae67fd4823619e3aa810feaf68e93b">U8G_NOINLINE</a>;
<a name="l06009"></a>06009 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a9b998421dc4bafc3292d44f6df292645">u8g_pb8h1_set_pixel</a>(<a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index) <a class="code" href="u8glib__ex_8h.html#a4bae67fd4823619e3aa810feaf68e93b">U8G_NOINLINE</a>;
<a name="l06010"></a>06010 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a87102fcb35e0f01949709d024bd1ffe0">u8g_pb8h1_SetPixel</a>(<a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> *b, <span class="keyword">const</span> <a class="code" href="struct__u8g__dev__arg__pixel__t.html">u8g_dev_arg_pixel_t</a> * <span class="keyword">const</span> arg_pixel) <a class="code" href="u8glib__ex_8h.html#a4bae67fd4823619e3aa810feaf68e93b">U8G_NOINLINE</a> ;
<a name="l06011"></a>06011 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#ae32ff487996a382dd2f6de1a0b377b4e">u8g_pb8h1_Set8PixelStd</a>(<a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> *b, <a class="code" href="struct__u8g__dev__arg__pixel__t.html">u8g_dev_arg_pixel_t</a> *arg_pixel) <a class="code" href="u8glib__ex_8h.html#a4bae67fd4823619e3aa810feaf68e93b">U8G_NOINLINE</a>;
<a name="l06012"></a>06012 uint8_t <a class="code" href="u8glib__ex_8h.html#a49367556b38e77c7df14666d008513c1">u8g_dev_pb8h1_base_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t msg, <span class="keywordtype">void</span> *arg);
<a name="l06013"></a>06013 
<a name="l06014"></a>06014 
<a name="l06015"></a>06015 <span class="preprocessor">#ifdef NEW_CODE</span>
<a name="l06016"></a>06016 <span class="preprocessor"></span><span class="keyword">struct </span>u8g_pb_h1_struct
<a name="l06017"></a>06017 {
<a name="l06018"></a>06018   u8g_uint_t x;
<a name="l06019"></a>06019   u8g_uint_t y;
<a name="l06020"></a>06020   uint8_t *ptr;
<a name="l06021"></a>06021   uint8_t mask;
<a name="l06022"></a>06022   uint8_t line_byte_len;
<a name="l06023"></a>06023   uint8_t cnt;
<a name="l06024"></a>06024 };
<a name="l06025"></a>06025 
<a name="l06026"></a>06026 <span class="keyword">static</span> uint8_t u8g_pb8h1_bitmask[8] = { 0x080, 0x040, 0x020, 0x010, 0x008, 0x004, 0x002, 0x001 };
<a name="l06027"></a>06027 
<a name="l06028"></a>06028 <span class="keyword">static</span> <span class="keywordtype">void</span> u8g_pb8h1_state_right(<span class="keyword">struct</span> u8g_pb_h1_struct *s)  <a class="code" href="u8glib__ex_8h.html#a4bae67fd4823619e3aa810feaf68e93b">U8G_NOINLINE</a>;
<a name="l06029"></a>06029 <span class="keyword">static</span> <span class="keywordtype">void</span> u8g_pb8h1_state_right(<span class="keyword">struct</span> u8g_pb_h1_struct *s)
<a name="l06030"></a>06030 {
<a name="l06031"></a>06031   <span class="keyword">register</span> u8g_uint_t x;
<a name="l06032"></a>06032   x = s-&gt;x;
<a name="l06033"></a>06033   x++;
<a name="l06034"></a>06034   s-&gt;x = x;
<a name="l06035"></a>06035   x &amp;= 7;
<a name="l06036"></a>06036   s-&gt;mask = u8g_pb8h1_bitmask[x];
<a name="l06037"></a>06037   <span class="keywordflow">if</span> ( x == 0 )
<a name="l06038"></a>06038     s-&gt;ptr++;
<a name="l06039"></a>06039 }
<a name="l06040"></a>06040 
<a name="l06041"></a>06041 <span class="keyword">static</span> <span class="keywordtype">void</span> u8g_pb8h1_state_left(<span class="keyword">struct</span> u8g_pb_h1_struct *s)
<a name="l06042"></a>06042 {
<a name="l06043"></a>06043   <span class="keyword">register</span> u8g_uint_t x;
<a name="l06044"></a>06044   x = s-&gt;x;
<a name="l06045"></a>06045   x--;
<a name="l06046"></a>06046   s-&gt;x = x;
<a name="l06047"></a>06047   x &amp;= 7;
<a name="l06048"></a>06048   s-&gt;mask = u8g_pb8h1_bitmask[x];
<a name="l06049"></a>06049   <span class="keywordflow">if</span> ( x == 7 )
<a name="l06050"></a>06050     s-&gt;ptr--;
<a name="l06051"></a>06051 }
<a name="l06052"></a>06052 
<a name="l06053"></a>06053 <span class="keyword">static</span> <span class="keywordtype">void</span> u8g_pb8h1_state_down(<span class="keyword">struct</span> u8g_pb_h1_struct *s)
<a name="l06054"></a>06054 {
<a name="l06055"></a>06055   s-&gt;y++;
<a name="l06056"></a>06056   s-&gt;ptr += s-&gt;line_byte_len;
<a name="l06057"></a>06057 }
<a name="l06058"></a>06058 
<a name="l06059"></a>06059 <span class="keyword">static</span> <span class="keywordtype">void</span> u8g_pb8h1_state_up(<span class="keyword">struct</span> u8g_pb_h1_struct *s)
<a name="l06060"></a>06060 {
<a name="l06061"></a>06061   s-&gt;y--;
<a name="l06062"></a>06062   s-&gt;ptr -= s-&gt;line_byte_len;
<a name="l06063"></a>06063 }
<a name="l06064"></a>06064 
<a name="l06065"></a>06065 <span class="keyword">static</span> <span class="keywordtype">void</span> u8g_pb8h1_state_init(<span class="keyword">struct</span> u8g_pb_h1_struct *s, <a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> *b, u8g_uint_t x, u8g_uint_t y) <a class="code" href="u8glib__ex_8h.html#a4bae67fd4823619e3aa810feaf68e93b">U8G_NOINLINE</a>;
<a name="l06066"></a>06066 <span class="keyword">static</span> <span class="keywordtype">void</span> u8g_pb8h1_state_init(<span class="keyword">struct</span> u8g_pb_h1_struct *s, <a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> *b, u8g_uint_t x, u8g_uint_t y)
<a name="l06067"></a>06067 {
<a name="l06068"></a>06068   u8g_uint_t tmp;
<a name="l06069"></a>06069 
<a name="l06070"></a>06070   uint8_t *ptr = b-&gt;<a class="code" href="struct__u8g__pb__t.html#a5bc5fa69bee375df074734a2c4858604">buf</a>;
<a name="l06071"></a>06071 
<a name="l06072"></a>06072   s-&gt;x = x;
<a name="l06073"></a>06073   s-&gt;y = y;
<a name="l06074"></a>06074 
<a name="l06075"></a>06075   y -= b-&gt;<a class="code" href="struct__u8g__pb__t.html#ad86061e0a24796ae7c1752e6f25ecb97">p</a>.<a class="code" href="struct__u8g__page__t.html#ad849a6c82137ac60b0a2bd19cbd21b5a">page_y0</a>;
<a name="l06076"></a>06076 
<a name="l06077"></a>06077   tmp = b-&gt;<a class="code" href="struct__u8g__pb__t.html#a12c3336a1bb53db20c777c05c17705b9">width</a>;
<a name="l06078"></a>06078   tmp &gt;&gt;= 3;
<a name="l06079"></a>06079   s-&gt;line_byte_len = tmp;
<a name="l06080"></a>06080 
<a name="l06081"></a>06081   <span class="comment">/* assume negative y values, can be down to -7, subtract this from the pointer and add correction of 8 to y */</span>
<a name="l06082"></a>06082   ptr -= tmp*8;
<a name="l06083"></a>06083   y+=8;
<a name="l06084"></a>06084   <span class="comment">/* it is important that the result of tmp*y can be 16 bit value also for 8 bit mode */</span>
<a name="l06085"></a>06085   ptr += tmp*y;
<a name="l06086"></a>06086 
<a name="l06087"></a>06087   s-&gt;mask = u8g_pb8h1_bitmask[x &amp; 7];
<a name="l06088"></a>06088 
<a name="l06089"></a>06089   <span class="comment">/* assume negative x values (to -7), subtract 8 pixel from the pointer and add 8 to x */</span>
<a name="l06090"></a>06090   ptr--;
<a name="l06091"></a>06091   x += 8;
<a name="l06092"></a>06092   x &gt;&gt;= 3;
<a name="l06093"></a>06093   ptr += x;
<a name="l06094"></a>06094   s-&gt;ptr = ptr;
<a name="l06095"></a>06095 }
<a name="l06096"></a>06096 
<a name="l06097"></a>06097 <span class="keyword">static</span> <span class="keywordtype">void</span> u8g_pb8h1_state_set_pixel(<span class="keyword">struct</span> u8g_pb_h1_struct *s, uint8_t color_index) <a class="code" href="u8glib__ex_8h.html#a4bae67fd4823619e3aa810feaf68e93b">U8G_NOINLINE</a>;
<a name="l06098"></a>06098 <span class="keyword">static</span> <span class="keywordtype">void</span> u8g_pb8h1_state_set_pixel(<span class="keyword">struct</span> u8g_pb_h1_struct *s, uint8_t color_index)
<a name="l06099"></a>06099 {
<a name="l06100"></a>06100 
<a name="l06101"></a>06101 <span class="preprocessor">#ifdef __unix__</span>
<a name="l06102"></a>06102 <span class="preprocessor"></span>  assert( s-&gt;ptr &gt;= u8g_buf_lower_limit );
<a name="l06103"></a>06103   assert( s-&gt;ptr &lt; u8g_buf_upper_limit );
<a name="l06104"></a>06104 <span class="preprocessor">#endif</span>
<a name="l06105"></a>06105 <span class="preprocessor"></span>
<a name="l06106"></a>06106   <span class="keywordflow">if</span> ( color_index )
<a name="l06107"></a>06107   {
<a name="l06108"></a>06108     *s-&gt;ptr |= s-&gt;mask;
<a name="l06109"></a>06109   }
<a name="l06110"></a>06110   <span class="keywordflow">else</span>
<a name="l06111"></a>06111   {
<a name="l06112"></a>06112     uint8_t mask = s-&gt;mask;
<a name="l06113"></a>06113     mask ^=0xff;
<a name="l06114"></a>06114     *s-&gt;ptr &amp;= mask;
<a name="l06115"></a>06115   }
<a name="l06116"></a>06116 }
<a name="l06117"></a>06117 <span class="preprocessor">#endif</span>
<a name="l06118"></a>06118 <span class="preprocessor"></span>
<a name="l06119"></a>06119 
<a name="l06120"></a><a class="code" href="u8glib__ex_8h.html#a07d1ceb84bda26efa3b8c973aec24761">06120</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a07d1ceb84bda26efa3b8c973aec24761">u8g_pb8h1_Init</a>(<a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> *b, <span class="keywordtype">void</span> *buf, u8g_uint_t width)
<a name="l06121"></a>06121 {
<a name="l06122"></a>06122   b-&gt;<a class="code" href="struct__u8g__pb__t.html#a5bc5fa69bee375df074734a2c4858604">buf</a> = buf;
<a name="l06123"></a>06123   b-&gt;<a class="code" href="struct__u8g__pb__t.html#a12c3336a1bb53db20c777c05c17705b9">width</a> = width;
<a name="l06124"></a>06124   <a class="code" href="u8glib__ex_8h.html#a70f71de3c3bb7ba529e5b078350c9f9f">u8g_pb_Clear</a>(b);
<a name="l06125"></a>06125 }
<a name="l06126"></a>06126 
<a name="l06127"></a>06127 <span class="comment">/* limitation: total buffer must not exceed 256 bytes */</span>
<a name="l06128"></a><a class="code" href="u8glib__ex_8h.html#a9b998421dc4bafc3292d44f6df292645">06128</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a9b998421dc4bafc3292d44f6df292645">u8g_pb8h1_set_pixel</a>(<a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index)
<a name="l06129"></a>06129 {
<a name="l06130"></a>06130 <span class="preprocessor">#ifdef NEW_CODE</span>
<a name="l06131"></a>06131 <span class="preprocessor"></span>  <span class="keyword">struct </span>u8g_pb_h1_struct s;
<a name="l06132"></a>06132   u8g_pb8h1_state_init(&amp;s, b, x, y);
<a name="l06133"></a>06133   u8g_pb8h1_state_set_pixel(&amp;s, color_index);
<a name="l06134"></a>06134 
<a name="l06135"></a>06135 <span class="comment">//  u8g_pb8h1_state_up(&amp;s);</span>
<a name="l06136"></a>06136 <span class="comment">//  if ( s.y &gt; b-&gt;p.page_y1 )</span>
<a name="l06137"></a>06137 <span class="comment">//    return;</span>
<a name="l06138"></a>06138 <span class="comment">//  if ( s.x &gt; b-&gt;width )</span>
<a name="l06139"></a>06139 <span class="comment">//    return;</span>
<a name="l06140"></a>06140 <span class="comment">//  u8g_pb8h1_state_set_pixel(&amp;s, color_index);</span>
<a name="l06141"></a>06141 <span class="preprocessor">#else</span>
<a name="l06142"></a>06142 <span class="preprocessor"></span>  <span class="keyword">register</span> uint8_t mask;
<a name="l06143"></a>06143   u8g_uint_t tmp;
<a name="l06144"></a>06144   uint8_t *ptr = (uint8_t*)b-&gt;<a class="code" href="struct__u8g__pb__t.html#a5bc5fa69bee375df074734a2c4858604">buf</a>;
<a name="l06145"></a>06145 
<a name="l06146"></a>06146   y -= b-&gt;<a class="code" href="struct__u8g__pb__t.html#ad86061e0a24796ae7c1752e6f25ecb97">p</a>.<a class="code" href="struct__u8g__page__t.html#ad849a6c82137ac60b0a2bd19cbd21b5a">page_y0</a>;
<a name="l06147"></a>06147   tmp = b-&gt;<a class="code" href="struct__u8g__pb__t.html#a12c3336a1bb53db20c777c05c17705b9">width</a>;
<a name="l06148"></a>06148   tmp &gt;&gt;= 3;
<a name="l06149"></a>06149   tmp *= (uint8_t)y;
<a name="l06150"></a>06150   ptr += tmp;
<a name="l06151"></a>06151 
<a name="l06152"></a>06152   mask = 0x080;
<a name="l06153"></a>06153   mask &gt;&gt;= x &amp; 7;
<a name="l06154"></a>06154   x &gt;&gt;= 3;
<a name="l06155"></a>06155   ptr += x;
<a name="l06156"></a>06156   <span class="keywordflow">if</span> ( color_index )
<a name="l06157"></a>06157   {
<a name="l06158"></a>06158     *ptr |= mask;
<a name="l06159"></a>06159   }
<a name="l06160"></a>06160   <span class="keywordflow">else</span>
<a name="l06161"></a>06161   {
<a name="l06162"></a>06162     mask ^=0xff;
<a name="l06163"></a>06163     *ptr &amp;= mask;
<a name="l06164"></a>06164   }
<a name="l06165"></a>06165 <span class="preprocessor">#endif</span>
<a name="l06166"></a>06166 <span class="preprocessor"></span>}
<a name="l06167"></a>06167 
<a name="l06168"></a>06168 
<a name="l06169"></a><a class="code" href="u8glib__ex_8h.html#a87102fcb35e0f01949709d024bd1ffe0">06169</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a87102fcb35e0f01949709d024bd1ffe0">u8g_pb8h1_SetPixel</a>(<a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> *b, <span class="keyword">const</span> <a class="code" href="struct__u8g__dev__arg__pixel__t.html">u8g_dev_arg_pixel_t</a> * <span class="keyword">const</span> arg_pixel)
<a name="l06170"></a>06170 {
<a name="l06171"></a>06171   <span class="keywordflow">if</span> ( arg_pixel-&gt;<a class="code" href="struct__u8g__dev__arg__pixel__t.html#a14d91862d05b147bd3ddaa61dec19f21">y</a> &lt; b-&gt;<a class="code" href="struct__u8g__pb__t.html#ad86061e0a24796ae7c1752e6f25ecb97">p</a>.<a class="code" href="struct__u8g__page__t.html#ad849a6c82137ac60b0a2bd19cbd21b5a">page_y0</a> )
<a name="l06172"></a>06172     <span class="keywordflow">return</span>;
<a name="l06173"></a>06173   <span class="keywordflow">if</span> ( arg_pixel-&gt;<a class="code" href="struct__u8g__dev__arg__pixel__t.html#a14d91862d05b147bd3ddaa61dec19f21">y</a> &gt; b-&gt;<a class="code" href="struct__u8g__pb__t.html#ad86061e0a24796ae7c1752e6f25ecb97">p</a>.<a class="code" href="struct__u8g__page__t.html#ad80e065e972df7c230dccebf745006fb">page_y1</a> )
<a name="l06174"></a>06174     <span class="keywordflow">return</span>;
<a name="l06175"></a>06175   <span class="keywordflow">if</span> ( arg_pixel-&gt;<a class="code" href="struct__u8g__dev__arg__pixel__t.html#a0bd126a4a84709451f22abb1c7c704d0">x</a> &gt;= b-&gt;<a class="code" href="struct__u8g__pb__t.html#a12c3336a1bb53db20c777c05c17705b9">width</a> )
<a name="l06176"></a>06176     <span class="keywordflow">return</span>;
<a name="l06177"></a>06177   <a class="code" href="u8glib__ex_8h.html#a9b998421dc4bafc3292d44f6df292645">u8g_pb8h1_set_pixel</a>(b, arg_pixel-&gt;<a class="code" href="struct__u8g__dev__arg__pixel__t.html#a0bd126a4a84709451f22abb1c7c704d0">x</a>, arg_pixel-&gt;<a class="code" href="struct__u8g__dev__arg__pixel__t.html#a14d91862d05b147bd3ddaa61dec19f21">y</a>, arg_pixel-&gt;<a class="code" href="struct__u8g__dev__arg__pixel__t.html#aa99ddefe5089389e170ccbec18a60ec2">color</a>);
<a name="l06178"></a>06178 }
<a name="l06179"></a>06179 
<a name="l06180"></a><a class="code" href="u8glib__ex_8h.html#ae32ff487996a382dd2f6de1a0b377b4e">06180</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#ae32ff487996a382dd2f6de1a0b377b4e">u8g_pb8h1_Set8PixelStd</a>(<a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> *b, <a class="code" href="struct__u8g__dev__arg__pixel__t.html">u8g_dev_arg_pixel_t</a> *arg_pixel)
<a name="l06181"></a>06181 {
<a name="l06182"></a>06182   <span class="keyword">register</span> uint8_t pixel = arg_pixel-&gt;<a class="code" href="struct__u8g__dev__arg__pixel__t.html#a03ae8f6034c643489417f0a12a95966d">pixel</a>;
<a name="l06183"></a>06183   <span class="keywordflow">do</span>
<a name="l06184"></a>06184   {
<a name="l06185"></a>06185     <span class="keywordflow">if</span> ( pixel &amp; 128 )
<a name="l06186"></a>06186     {
<a name="l06187"></a>06187       <a class="code" href="u8glib__ex_8h.html#a87102fcb35e0f01949709d024bd1ffe0">u8g_pb8h1_SetPixel</a>(b, arg_pixel);
<a name="l06188"></a>06188     }
<a name="l06189"></a>06189     <span class="keywordflow">switch</span>( arg_pixel-&gt;<a class="code" href="struct__u8g__dev__arg__pixel__t.html#a92abda0bec7c1c978fe96f87aad18067">dir</a> )
<a name="l06190"></a>06190     {
<a name="l06191"></a>06191       <span class="keywordflow">case</span> 0: arg_pixel-&gt;<a class="code" href="struct__u8g__dev__arg__pixel__t.html#a0bd126a4a84709451f22abb1c7c704d0">x</a>++; <span class="keywordflow">break</span>;
<a name="l06192"></a>06192       <span class="keywordflow">case</span> 1: arg_pixel-&gt;<a class="code" href="struct__u8g__dev__arg__pixel__t.html#a14d91862d05b147bd3ddaa61dec19f21">y</a>++; <span class="keywordflow">break</span>;
<a name="l06193"></a>06193       <span class="keywordflow">case</span> 2: arg_pixel-&gt;<a class="code" href="struct__u8g__dev__arg__pixel__t.html#a0bd126a4a84709451f22abb1c7c704d0">x</a>--; <span class="keywordflow">break</span>;
<a name="l06194"></a>06194       <span class="keywordflow">case</span> 3: arg_pixel-&gt;<a class="code" href="struct__u8g__dev__arg__pixel__t.html#a14d91862d05b147bd3ddaa61dec19f21">y</a>--; <span class="keywordflow">break</span>;
<a name="l06195"></a>06195     }
<a name="l06196"></a>06196     pixel &lt;&lt;= 1;
<a name="l06197"></a>06197   } <span class="keywordflow">while</span>( pixel != 0  );
<a name="l06198"></a>06198 }
<a name="l06199"></a>06199 
<a name="l06200"></a><a class="code" href="u8glib__ex_8h.html#ac3385a061b5430f90dc9e0ca55887850">06200</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#ac3385a061b5430f90dc9e0ca55887850">u8g_pb8h1_Set8PixelOpt2</a>(<a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> *b, <a class="code" href="struct__u8g__dev__arg__pixel__t.html">u8g_dev_arg_pixel_t</a> *arg_pixel)
<a name="l06201"></a>06201 {
<a name="l06202"></a>06202   <span class="keyword">register</span> uint8_t pixel = arg_pixel-&gt;<a class="code" href="struct__u8g__dev__arg__pixel__t.html#a03ae8f6034c643489417f0a12a95966d">pixel</a>;
<a name="l06203"></a>06203   u8g_uint_t dx = 0;
<a name="l06204"></a>06204   u8g_uint_t dy = 0;
<a name="l06205"></a>06205 
<a name="l06206"></a>06206   <span class="keywordflow">switch</span>( arg_pixel-&gt;<a class="code" href="struct__u8g__dev__arg__pixel__t.html#a92abda0bec7c1c978fe96f87aad18067">dir</a> )
<a name="l06207"></a>06207   {
<a name="l06208"></a>06208     <span class="keywordflow">case</span> 0: dx++; <span class="keywordflow">break</span>;
<a name="l06209"></a>06209     <span class="keywordflow">case</span> 1: dy++; <span class="keywordflow">break</span>;
<a name="l06210"></a>06210     <span class="keywordflow">case</span> 2: dx--; <span class="keywordflow">break</span>;
<a name="l06211"></a>06211     <span class="keywordflow">case</span> 3: dy--; <span class="keywordflow">break</span>;
<a name="l06212"></a>06212   }
<a name="l06213"></a>06213 
<a name="l06214"></a>06214   <span class="keywordflow">do</span>
<a name="l06215"></a>06215   {
<a name="l06216"></a>06216     <span class="keywordflow">if</span> ( pixel &amp; 128 )
<a name="l06217"></a>06217       <a class="code" href="u8glib__ex_8h.html#a87102fcb35e0f01949709d024bd1ffe0">u8g_pb8h1_SetPixel</a>(b, arg_pixel);
<a name="l06218"></a>06218     arg_pixel-&gt;<a class="code" href="struct__u8g__dev__arg__pixel__t.html#a0bd126a4a84709451f22abb1c7c704d0">x</a> += dx;
<a name="l06219"></a>06219     arg_pixel-&gt;<a class="code" href="struct__u8g__dev__arg__pixel__t.html#a14d91862d05b147bd3ddaa61dec19f21">y</a> += dy;
<a name="l06220"></a>06220     pixel &lt;&lt;= 1;
<a name="l06221"></a>06221   } <span class="keywordflow">while</span>( pixel != 0  );
<a name="l06222"></a>06222 }
<a name="l06223"></a>06223 
<a name="l06224"></a>06224 <span class="preprocessor">#ifdef NEW_CODE</span>
<a name="l06225"></a>06225 <span class="preprocessor"></span><span class="keyword">static</span> <span class="keywordtype">void</span> u8g_pb8h1_Set8PixelState(<a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> *b, <a class="code" href="struct__u8g__dev__arg__pixel__t.html">u8g_dev_arg_pixel_t</a> *arg_pixel)
<a name="l06226"></a>06226 {
<a name="l06227"></a>06227   <span class="keyword">register</span> uint8_t pixel = arg_pixel-&gt;<a class="code" href="struct__u8g__dev__arg__pixel__t.html#a03ae8f6034c643489417f0a12a95966d">pixel</a>;
<a name="l06228"></a>06228   <span class="keyword">struct </span>u8g_pb_h1_struct s;
<a name="l06229"></a>06229   uint8_t cnt;
<a name="l06230"></a>06230   u8g_pb8h1_state_init(&amp;s, b, arg_pixel-&gt;<a class="code" href="struct__u8g__dev__arg__pixel__t.html#a0bd126a4a84709451f22abb1c7c704d0">x</a>, arg_pixel-&gt;<a class="code" href="struct__u8g__dev__arg__pixel__t.html#a14d91862d05b147bd3ddaa61dec19f21">y</a>);
<a name="l06231"></a>06231   cnt = 8;
<a name="l06232"></a>06232   <span class="keywordflow">switch</span>( arg_pixel-&gt;<a class="code" href="struct__u8g__dev__arg__pixel__t.html#a92abda0bec7c1c978fe96f87aad18067">dir</a> )
<a name="l06233"></a>06233   {
<a name="l06234"></a>06234     <span class="keywordflow">case</span> 0:
<a name="l06235"></a>06235       <span class="keywordflow">do</span>
<a name="l06236"></a>06236       {
<a name="l06237"></a>06237         <span class="keywordflow">if</span> ( s.x &lt; b-&gt;<a class="code" href="struct__u8g__pb__t.html#a12c3336a1bb53db20c777c05c17705b9">width</a> )
<a name="l06238"></a>06238           <span class="keywordflow">if</span> ( pixel &amp; 128 )
<a name="l06239"></a>06239             u8g_pb8h1_state_set_pixel(&amp;s, arg_pixel-&gt;<a class="code" href="struct__u8g__dev__arg__pixel__t.html#aa99ddefe5089389e170ccbec18a60ec2">color</a>);
<a name="l06240"></a>06240         u8g_pb8h1_state_right(&amp;s);
<a name="l06241"></a>06241         pixel &lt;&lt;= 1;
<a name="l06242"></a>06242         cnt--;
<a name="l06243"></a>06243       } <span class="keywordflow">while</span>( cnt &gt; 0 &amp;&amp; pixel != 0  );
<a name="l06244"></a>06244       <span class="keywordflow">break</span>;
<a name="l06245"></a>06245     <span class="keywordflow">case</span> 1:
<a name="l06246"></a>06246       <span class="keywordflow">do</span>
<a name="l06247"></a>06247       {
<a name="l06248"></a>06248         <span class="keywordflow">if</span> ( s.y &gt;= b-&gt;<a class="code" href="struct__u8g__pb__t.html#ad86061e0a24796ae7c1752e6f25ecb97">p</a>.<a class="code" href="struct__u8g__page__t.html#ad849a6c82137ac60b0a2bd19cbd21b5a">page_y0</a> )
<a name="l06249"></a>06249           <span class="keywordflow">if</span> ( s.y &lt;= b-&gt;<a class="code" href="struct__u8g__pb__t.html#ad86061e0a24796ae7c1752e6f25ecb97">p</a>.<a class="code" href="struct__u8g__page__t.html#ad80e065e972df7c230dccebf745006fb">page_y1</a> )
<a name="l06250"></a>06250             <span class="keywordflow">if</span> ( pixel &amp; 128 )
<a name="l06251"></a>06251               u8g_pb8h1_state_set_pixel(&amp;s, arg_pixel-&gt;<a class="code" href="struct__u8g__dev__arg__pixel__t.html#aa99ddefe5089389e170ccbec18a60ec2">color</a>);
<a name="l06252"></a>06252         u8g_pb8h1_state_down(&amp;s);
<a name="l06253"></a>06253         pixel &lt;&lt;= 1;
<a name="l06254"></a>06254         cnt--;
<a name="l06255"></a>06255       } <span class="keywordflow">while</span>( cnt &gt; 0 &amp;&amp; pixel != 0  );
<a name="l06256"></a>06256       <span class="keywordflow">break</span>;
<a name="l06257"></a>06257     <span class="keywordflow">case</span> 2:
<a name="l06258"></a>06258       <span class="keywordflow">do</span>
<a name="l06259"></a>06259       {
<a name="l06260"></a>06260         <span class="keywordflow">if</span> ( s.x &lt; b-&gt;<a class="code" href="struct__u8g__pb__t.html#a12c3336a1bb53db20c777c05c17705b9">width</a> )
<a name="l06261"></a>06261           <span class="keywordflow">if</span> ( pixel &amp; 128 )
<a name="l06262"></a>06262             u8g_pb8h1_state_set_pixel(&amp;s, arg_pixel-&gt;<a class="code" href="struct__u8g__dev__arg__pixel__t.html#aa99ddefe5089389e170ccbec18a60ec2">color</a>);
<a name="l06263"></a>06263         u8g_pb8h1_state_left(&amp;s);
<a name="l06264"></a>06264         pixel &lt;&lt;= 1;
<a name="l06265"></a>06265         cnt--;
<a name="l06266"></a>06266       } <span class="keywordflow">while</span>( cnt &gt; 0 &amp;&amp; pixel != 0 );
<a name="l06267"></a>06267       <span class="keywordflow">break</span>;
<a name="l06268"></a>06268     <span class="keywordflow">case</span> 3:
<a name="l06269"></a>06269       <span class="keywordflow">do</span>
<a name="l06270"></a>06270       {
<a name="l06271"></a>06271         <span class="keywordflow">if</span> ( s.y &gt;= b-&gt;<a class="code" href="struct__u8g__pb__t.html#ad86061e0a24796ae7c1752e6f25ecb97">p</a>.<a class="code" href="struct__u8g__page__t.html#ad849a6c82137ac60b0a2bd19cbd21b5a">page_y0</a> )
<a name="l06272"></a>06272           <span class="keywordflow">if</span> ( s.y &lt;= b-&gt;<a class="code" href="struct__u8g__pb__t.html#ad86061e0a24796ae7c1752e6f25ecb97">p</a>.<a class="code" href="struct__u8g__page__t.html#ad80e065e972df7c230dccebf745006fb">page_y1</a> )
<a name="l06273"></a>06273             <span class="keywordflow">if</span> ( pixel &amp; 128 )
<a name="l06274"></a>06274               u8g_pb8h1_state_set_pixel(&amp;s, arg_pixel-&gt;<a class="code" href="struct__u8g__dev__arg__pixel__t.html#aa99ddefe5089389e170ccbec18a60ec2">color</a>);
<a name="l06275"></a>06275         u8g_pb8h1_state_up(&amp;s);
<a name="l06276"></a>06276         pixel &lt;&lt;= 1;
<a name="l06277"></a>06277         cnt--;
<a name="l06278"></a>06278       } <span class="keywordflow">while</span>( cnt &gt; 0 &amp;&amp; pixel != 0  );
<a name="l06279"></a>06279       <span class="keywordflow">break</span>;
<a name="l06280"></a>06280   }
<a name="l06281"></a>06281 }
<a name="l06282"></a>06282 <span class="preprocessor">#endif</span>
<a name="l06283"></a>06283 <span class="preprocessor"></span>
<a name="l06284"></a><a class="code" href="u8glib__ex_8h.html#a49367556b38e77c7df14666d008513c1">06284</a> uint8_t <a class="code" href="u8glib__ex_8h.html#a49367556b38e77c7df14666d008513c1">u8g_dev_pb8h1_base_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev, uint8_t msg, <span class="keywordtype">void</span> *arg)
<a name="l06285"></a>06285 {
<a name="l06286"></a>06286   <a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> *pb = (<a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> *)(dev-&gt;<a class="code" href="struct__u8g__dev__t.html#abba2e941334cbcd55738b77b1be6526e">dev_mem</a>);
<a name="l06287"></a>06287   <span class="keywordflow">switch</span>(msg)
<a name="l06288"></a>06288   {
<a name="l06289"></a>06289     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#a23e74f1821719a43a7fc520a2f1b15c6">U8G_DEV_MSG_SET_8PIXEL</a>:
<a name="l06290"></a>06290 <span class="preprocessor">#ifdef NEW_CODE</span>
<a name="l06291"></a>06291 <span class="preprocessor"></span>      <span class="keywordflow">if</span> ( <a class="code" href="u8glib__ex_8h.html#ae8f5a2c3e48da2a02fab5206f81af74f">u8g_pb_Is8PixelVisible</a>(pb, (<a class="code" href="struct__u8g__dev__arg__pixel__t.html">u8g_dev_arg_pixel_t</a> *)arg) )
<a name="l06292"></a>06292         u8g_pb8h1_Set8PixelState(pb, (<a class="code" href="struct__u8g__dev__arg__pixel__t.html">u8g_dev_arg_pixel_t</a> *)arg);
<a name="l06293"></a>06293 <span class="preprocessor">#else</span>
<a name="l06294"></a>06294 <span class="preprocessor"></span>      <span class="keywordflow">if</span> ( <a class="code" href="u8glib__ex_8h.html#ae8f5a2c3e48da2a02fab5206f81af74f">u8g_pb_Is8PixelVisible</a>(pb, (<a class="code" href="struct__u8g__dev__arg__pixel__t.html">u8g_dev_arg_pixel_t</a> *)arg) )
<a name="l06295"></a>06295         <a class="code" href="u8glib__ex_8h.html#ac3385a061b5430f90dc9e0ca55887850">u8g_pb8h1_Set8PixelOpt2</a>(pb, (<a class="code" href="struct__u8g__dev__arg__pixel__t.html">u8g_dev_arg_pixel_t</a> *)arg);
<a name="l06296"></a>06296 <span class="preprocessor">#endif</span>
<a name="l06297"></a>06297 <span class="preprocessor"></span>      <span class="keywordflow">break</span>;
<a name="l06298"></a>06298     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#ae439ba8e396e0254d341662235de53ac">U8G_DEV_MSG_SET_PIXEL</a>:
<a name="l06299"></a>06299       <a class="code" href="u8glib__ex_8h.html#a87102fcb35e0f01949709d024bd1ffe0">u8g_pb8h1_SetPixel</a>(pb, (<a class="code" href="struct__u8g__dev__arg__pixel__t.html">u8g_dev_arg_pixel_t</a> *)arg);
<a name="l06300"></a>06300       <span class="keywordflow">break</span>;
<a name="l06301"></a>06301     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#a34fd7e41b79f81e31b3149d5865d8f3d">U8G_DEV_MSG_INIT</a>:
<a name="l06302"></a>06302       <span class="keywordflow">break</span>;
<a name="l06303"></a>06303     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#a376480714489edfb937e334b13a74d6b">U8G_DEV_MSG_STOP</a>:
<a name="l06304"></a>06304       <span class="keywordflow">break</span>;
<a name="l06305"></a>06305     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#a072af282af96a7c094fd6c52232c2f5e">U8G_DEV_MSG_PAGE_FIRST</a>:
<a name="l06306"></a>06306       <a class="code" href="u8glib__ex_8h.html#a70f71de3c3bb7ba529e5b078350c9f9f">u8g_pb_Clear</a>(pb);
<a name="l06307"></a>06307       <a class="code" href="u8glib__ex_8h.html#a55151c99b93f1d585fb20fae91404e4d">u8g_page_First</a>(&amp;(pb-&gt;<a class="code" href="struct__u8g__pb__t.html#ad86061e0a24796ae7c1752e6f25ecb97">p</a>));
<a name="l06308"></a>06308       <span class="keywordflow">break</span>;
<a name="l06309"></a>06309     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#a6bd7acf17c0a8391a9ad449f72273bd6">U8G_DEV_MSG_PAGE_NEXT</a>:
<a name="l06310"></a>06310       <span class="keywordflow">if</span> ( <a class="code" href="u8glib__ex_8h.html#a9e64e9aa126a52fbffccdb6b244b5a64">u8g_page_Next</a>(&amp;(pb-&gt;<a class="code" href="struct__u8g__pb__t.html#ad86061e0a24796ae7c1752e6f25ecb97">p</a>)) == 0 )
<a name="l06311"></a>06311         <span class="keywordflow">return</span> 0;
<a name="l06312"></a>06312       <a class="code" href="u8glib__ex_8h.html#a70f71de3c3bb7ba529e5b078350c9f9f">u8g_pb_Clear</a>(pb);
<a name="l06313"></a>06313       <span class="keywordflow">break</span>;
<a name="l06314"></a>06314 <span class="preprocessor">#ifdef U8G_DEV_MSG_IS_BBX_INTERSECTION</span>
<a name="l06315"></a>06315 <span class="preprocessor"></span>    <span class="keywordflow">case</span> U8G_DEV_MSG_IS_BBX_INTERSECTION:
<a name="l06316"></a>06316       <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#a5eb965cf1a843aed9f521843218f5ff3">u8g_pb_IsIntersection</a>(pb, (<a class="code" href="struct__u8g__dev__arg__bbx__t.html">u8g_dev_arg_bbx_t</a> *)arg);
<a name="l06317"></a>06317 <span class="preprocessor">#endif</span>
<a name="l06318"></a>06318 <span class="preprocessor"></span>    <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#a7ccd22af2fd9efd6a0961a979fd8a04e">U8G_DEV_MSG_GET_PAGE_BOX</a>:
<a name="l06319"></a>06319       <a class="code" href="u8glib__ex_8h.html#af7f4944e409dbdf5e094992336a899a8">u8g_pb_GetPageBox</a>(pb, (<a class="code" href="struct__u8g__box__t.html">u8g_box_t</a> *)arg);
<a name="l06320"></a>06320       <span class="keywordflow">break</span>;
<a name="l06321"></a>06321     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#abae9d4c5dd2273490e5d6fb316ad5a02">U8G_DEV_MSG_GET_WIDTH</a>:
<a name="l06322"></a>06322       *((u8g_uint_t *)arg) = pb-&gt;<a class="code" href="struct__u8g__pb__t.html#a12c3336a1bb53db20c777c05c17705b9">width</a>;
<a name="l06323"></a>06323       <span class="keywordflow">break</span>;
<a name="l06324"></a>06324     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#a601f8b6a720ab1530e0759186803f249">U8G_DEV_MSG_GET_HEIGHT</a>:
<a name="l06325"></a>06325       *((u8g_uint_t *)arg) = pb-&gt;<a class="code" href="struct__u8g__pb__t.html#ad86061e0a24796ae7c1752e6f25ecb97">p</a>.<a class="code" href="struct__u8g__page__t.html#a64804ce3ac5cacbd32e9793e3fe63ec9">total_height</a>;
<a name="l06326"></a>06326       <span class="keywordflow">break</span>;
<a name="l06327"></a>06327     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#a004a15da87b3ed36add4ae26b07db815">U8G_DEV_MSG_SET_COLOR_ENTRY</a>:
<a name="l06328"></a>06328       <span class="keywordflow">break</span>;
<a name="l06329"></a>06329     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#a6b5a5e19b21f03ca517adb640ac0705f">U8G_DEV_MSG_SET_XY_CB</a>:
<a name="l06330"></a>06330       <span class="keywordflow">break</span>;
<a name="l06331"></a>06331     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#aefd09b54d90de3a2116639518f8d8272">U8G_DEV_MSG_GET_MODE</a>:
<a name="l06332"></a>06332       <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#a4a03329b13acf5ca299a11dbde33ed6d">U8G_MODE_BW</a>;
<a name="l06333"></a>06333   }
<a name="l06334"></a>06334   <span class="keywordflow">return</span> 1;
<a name="l06335"></a>06335 }
<a name="l06336"></a>06336 
<a name="l06337"></a>06337 <span class="comment">// =========== u8g_com_arduino_st7920_spi.c ============</span>
<a name="l06338"></a>06338 <span class="comment">/*</span>
<a name="l06339"></a>06339 <span class="comment"></span>
<a name="l06340"></a>06340 <span class="comment">  u8g_com_arduino_st7920_spi.c</span>
<a name="l06341"></a>06341 <span class="comment"></span>
<a name="l06342"></a>06342 <span class="comment">  Universal 8bit Graphics Library</span>
<a name="l06343"></a>06343 <span class="comment"></span>
<a name="l06344"></a>06344 <span class="comment">  Copyright (c) 2011, olikraus@gmail.com</span>
<a name="l06345"></a>06345 <span class="comment">  All rights reserved.</span>
<a name="l06346"></a>06346 <span class="comment"></span>
<a name="l06347"></a>06347 <span class="comment">  Redistribution and use in source and binary forms, with or without modification,</span>
<a name="l06348"></a>06348 <span class="comment">  are permitted provided that the following conditions are met:</span>
<a name="l06349"></a>06349 <span class="comment"></span>
<a name="l06350"></a>06350 <span class="comment">  * Redistributions of source code must retain the above copyright notice, this list</span>
<a name="l06351"></a>06351 <span class="comment">    of conditions and the following disclaimer.</span>
<a name="l06352"></a>06352 <span class="comment"></span>
<a name="l06353"></a>06353 <span class="comment">  * Redistributions in binary form must reproduce the above copyright notice, this</span>
<a name="l06354"></a>06354 <span class="comment">    list of conditions and the following disclaimer in the documentation and/or other</span>
<a name="l06355"></a>06355 <span class="comment">    materials provided with the distribution.</span>
<a name="l06356"></a>06356 <span class="comment"></span>
<a name="l06357"></a>06357 <span class="comment">  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND</span>
<a name="l06358"></a>06358 <span class="comment">  CONTRIBUTORS &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES,</span>
<a name="l06359"></a>06359 <span class="comment">  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF</span>
<a name="l06360"></a>06360 <span class="comment">  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span>
<a name="l06361"></a>06361 <span class="comment">  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR</span>
<a name="l06362"></a>06362 <span class="comment">  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</span>
<a name="l06363"></a>06363 <span class="comment">  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT</span>
<a name="l06364"></a>06364 <span class="comment">  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span>
<a name="l06365"></a>06365 <span class="comment">  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span>
<a name="l06366"></a>06366 <span class="comment">  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,</span>
<a name="l06367"></a>06367 <span class="comment">  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span>
<a name="l06368"></a>06368 <span class="comment">  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF</span>
<a name="l06369"></a>06369 <span class="comment">  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span>
<a name="l06370"></a>06370 <span class="comment"></span>
<a name="l06371"></a>06371 <span class="comment">  A special SPI interface for ST7920 controller</span>
<a name="l06372"></a>06372 <span class="comment"></span>
<a name="l06373"></a>06373 <span class="comment">  Update for ATOMIC operation done (01 Jun 2013)</span>
<a name="l06374"></a>06374 <span class="comment">    U8G_ATOMIC_OR(ptr, val)</span>
<a name="l06375"></a>06375 <span class="comment">    U8G_ATOMIC_AND(ptr, val)</span>
<a name="l06376"></a>06376 <span class="comment">    U8G_ATOMIC_START();</span>
<a name="l06377"></a>06377 <span class="comment">    U8G_ATOMIC_END();</span>
<a name="l06378"></a>06378 <span class="comment"></span>
<a name="l06379"></a>06379 <span class="comment"></span>
<a name="l06380"></a>06380 <span class="comment">*/</span>
<a name="l06381"></a>06381 
<a name="l06382"></a>06382 
<a name="l06383"></a>06383 <span class="preprocessor">#if defined(ARDUINO)</span>
<a name="l06384"></a>06384 <span class="preprocessor"></span>
<a name="l06385"></a>06385 <span class="preprocessor">#if ARDUINO &lt; 100</span>
<a name="l06386"></a>06386 <span class="preprocessor"></span><span class="preprocessor">#include &lt;WProgram.h&gt;</span>
<a name="l06387"></a>06387 <span class="preprocessor">#include &quot;wiring_private.h&quot;</span>
<a name="l06388"></a>06388 <span class="preprocessor">#include &quot;pins_arduino.h&quot;</span>
<a name="l06389"></a>06389 
<a name="l06390"></a>06390 <span class="preprocessor">#else</span>
<a name="l06391"></a>06391 <span class="preprocessor"></span><span class="preprocessor">#include &lt;Arduino.h&gt;</span>
<a name="l06392"></a>06392 <span class="preprocessor">#include &quot;wiring_private.h&quot;</span>
<a name="l06393"></a>06393 <span class="preprocessor">#endif</span>
<a name="l06394"></a>06394 <span class="preprocessor"></span>
<a name="l06395"></a>06395 <span class="preprocessor">#if defined(__AVR__)</span>
<a name="l06396"></a>06396 <span class="preprocessor"></span>
<a name="l06397"></a>06397 uint8_t u8g_bitData, u8g_bitNotData;
<a name="l06398"></a>06398 uint8_t u8g_bitClock, u8g_bitNotClock;
<a name="l06399"></a>06399 <span class="keyword">volatile</span> uint8_t *u8g_outData;
<a name="l06400"></a>06400 <span class="keyword">volatile</span> uint8_t *u8g_outClock;
<a name="l06401"></a>06401 
<a name="l06402"></a>06402 <span class="keyword">static</span> <span class="keywordtype">void</span> u8g_com_arduino_init_shift_out(uint8_t dataPin, uint8_t clockPin)
<a name="l06403"></a>06403 {
<a name="l06404"></a>06404   u8g_outData = portOutputRegister(digitalPinToPort(dataPin));
<a name="l06405"></a>06405   u8g_outClock = portOutputRegister(digitalPinToPort(clockPin));
<a name="l06406"></a>06406   u8g_bitData = digitalPinToBitMask(dataPin);
<a name="l06407"></a>06407   u8g_bitClock = digitalPinToBitMask(clockPin);
<a name="l06408"></a>06408 
<a name="l06409"></a>06409   u8g_bitNotClock = u8g_bitClock;
<a name="l06410"></a>06410   u8g_bitNotClock ^= 0x0ff;
<a name="l06411"></a>06411 
<a name="l06412"></a>06412   u8g_bitNotData = u8g_bitData;
<a name="l06413"></a>06413   u8g_bitNotData ^= 0x0ff;
<a name="l06414"></a>06414 }
<a name="l06415"></a>06415 
<a name="l06416"></a>06416 <span class="keyword">static</span> <span class="keywordtype">void</span> u8g_com_arduino_do_shift_out_msb_first(uint8_t val) <a class="code" href="u8glib__ex_8h.html#a4bae67fd4823619e3aa810feaf68e93b">U8G_NOINLINE</a>;
<a name="l06417"></a>06417 <span class="keyword">static</span> <span class="keywordtype">void</span> u8g_com_arduino_do_shift_out_msb_first(uint8_t val)
<a name="l06418"></a>06418 {
<a name="l06419"></a>06419   uint8_t cnt = 8;
<a name="l06420"></a>06420   uint8_t bitData = u8g_bitData;
<a name="l06421"></a>06421   uint8_t bitNotData = u8g_bitNotData;
<a name="l06422"></a>06422   uint8_t bitClock = u8g_bitClock;
<a name="l06423"></a>06423   uint8_t bitNotClock = u8g_bitNotClock;
<a name="l06424"></a>06424   <span class="keyword">volatile</span> uint8_t *outData = u8g_outData;
<a name="l06425"></a>06425   <span class="keyword">volatile</span> uint8_t *outClock = u8g_outClock;
<a name="l06426"></a>06426 
<a name="l06427"></a>06427 
<a name="l06428"></a>06428   <a class="code" href="u8glib__ex_8h.html#a886553fd8da10af11feaaafeb50ddc02">U8G_ATOMIC_START</a>();
<a name="l06429"></a>06429   bitData |= *outData;
<a name="l06430"></a>06430   bitNotData &amp;= *outData;
<a name="l06431"></a>06431   <span class="keywordflow">do</span>
<a name="l06432"></a>06432   {
<a name="l06433"></a>06433     <span class="keywordflow">if</span> ( val &amp; 128 )
<a name="l06434"></a>06434       *outData = bitData;
<a name="l06435"></a>06435     <span class="keywordflow">else</span>
<a name="l06436"></a>06436       *outData = bitNotData;
<a name="l06437"></a>06437 
<a name="l06438"></a>06438     <span class="comment">/*</span>
<a name="l06439"></a>06439 <span class="comment">    *outClock |= bitClock;</span>
<a name="l06440"></a>06440 <span class="comment">    val &lt;&lt;= 1;</span>
<a name="l06441"></a>06441 <span class="comment">    cnt--;</span>
<a name="l06442"></a>06442 <span class="comment">    *outClock &amp;= bitNotClock;</span>
<a name="l06443"></a>06443 <span class="comment">    */</span>
<a name="l06444"></a>06444 
<a name="l06445"></a>06445     val &lt;&lt;= 1;
<a name="l06446"></a>06446     *outClock &amp;= bitNotClock;
<a name="l06447"></a>06447     cnt--;
<a name="l06448"></a>06448     <span class="comment">// removed micro delays, because AVRs are too slow and the delay is not required</span>
<a name="l06449"></a>06449     <span class="comment">//u8g_MicroDelay();</span>
<a name="l06450"></a>06450     *outClock |= bitClock;
<a name="l06451"></a>06451     <span class="comment">//u8g_MicroDelay();</span>
<a name="l06452"></a>06452   } <span class="keywordflow">while</span>( cnt != 0 );
<a name="l06453"></a>06453   <a class="code" href="u8glib__ex_8h.html#aebeff7c847c90b70a416529e140317e5">U8G_ATOMIC_END</a>();
<a name="l06454"></a>06454 }
<a name="l06455"></a>06455 
<a name="l06456"></a>06456 <span class="preprocessor">#elif defined(__18CXX) || defined(__PIC32MX)</span>
<a name="l06457"></a>06457 <span class="preprocessor"></span>
<a name="l06458"></a>06458 uint16_t dog_bitData, dog_bitNotData;
<a name="l06459"></a>06459 uint16_t dog_bitClock, dog_bitNotClock;
<a name="l06460"></a>06460 <span class="keyword">volatile</span> uint32_t *dog_outData;
<a name="l06461"></a>06461 <span class="keyword">volatile</span> uint32_t *dog_outClock;
<a name="l06462"></a>06462 <span class="keyword">volatile</span> uint32_t dog_pic32_spi_tmp;
<a name="l06463"></a>06463 
<a name="l06464"></a>06464 <span class="keyword">static</span> <span class="keywordtype">void</span> u8g_com_arduino_init_shift_out(uint8_t dataPin, uint8_t clockPin)
<a name="l06465"></a>06465 {
<a name="l06466"></a>06466   dog_outData = portOutputRegister(digitalPinToPort(dataPin));
<a name="l06467"></a>06467   dog_outClock = portOutputRegister(digitalPinToPort(clockPin));
<a name="l06468"></a>06468   dog_bitData = digitalPinToBitMask(dataPin);
<a name="l06469"></a>06469   dog_bitClock = digitalPinToBitMask(clockPin);
<a name="l06470"></a>06470 
<a name="l06471"></a>06471   dog_bitNotClock = dog_bitClock;
<a name="l06472"></a>06472   dog_bitNotClock ^= 0x0ffff;
<a name="l06473"></a>06473 
<a name="l06474"></a>06474   dog_bitNotData = dog_bitData;
<a name="l06475"></a>06475   dog_bitNotData ^= 0x0ffff;
<a name="l06476"></a>06476 }
<a name="l06477"></a>06477 
<a name="l06478"></a>06478 <span class="keyword">static</span> <span class="keywordtype">void</span> u8g_com_arduino_do_shift_out_msb_first(uint8_t val)
<a name="l06479"></a>06479 {
<a name="l06480"></a>06480   uint8_t cnt = 8;
<a name="l06481"></a>06481   <a class="code" href="u8glib__ex_8h.html#a886553fd8da10af11feaaafeb50ddc02">U8G_ATOMIC_START</a>();
<a name="l06482"></a>06482   <span class="keywordflow">do</span>
<a name="l06483"></a>06483   {
<a name="l06484"></a>06484     <span class="keywordflow">if</span> ( val &amp; 128 )
<a name="l06485"></a>06485         *dog_outData |= dog_bitData;
<a name="l06486"></a>06486     <span class="keywordflow">else</span>
<a name="l06487"></a>06487         *dog_outData &amp;= dog_bitNotData;
<a name="l06488"></a>06488     val &lt;&lt;= 1;
<a name="l06489"></a>06489     <span class="comment">//u8g_MicroDelay();</span>
<a name="l06490"></a>06490     <span class="comment">//*dog_outClock |= dog_bitClock;</span>
<a name="l06491"></a>06491     *dog_outClock &amp;= dog_bitNotClock;
<a name="l06492"></a>06492     cnt--;
<a name="l06493"></a>06493     <a class="code" href="u8glib__ex_8h.html#a1920961449fcdb3579c6c7e3d6e41877">u8g_MicroDelay</a>();
<a name="l06494"></a>06494     <span class="comment">//*dog_outClock &amp;= dog_bitNotClock;</span>
<a name="l06495"></a>06495     *dog_outClock |= dog_bitClock;
<a name="l06496"></a>06496     <a class="code" href="u8glib__ex_8h.html#a1920961449fcdb3579c6c7e3d6e41877">u8g_MicroDelay</a>();
<a name="l06497"></a>06497 
<a name="l06498"></a>06498   } <span class="keywordflow">while</span>( cnt != 0 );
<a name="l06499"></a>06499   <a class="code" href="u8glib__ex_8h.html#aebeff7c847c90b70a416529e140317e5">U8G_ATOMIC_END</a>();
<a name="l06500"></a>06500 }
<a name="l06501"></a>06501 
<a name="l06502"></a>06502 <span class="preprocessor">#else</span>
<a name="l06503"></a>06503 <span class="preprocessor"></span>
<a name="l06504"></a>06504 <span class="comment">/* default interface, Arduino DUE (__arm__) */</span>
<a name="l06505"></a>06505 
<a name="l06506"></a>06506 uint8_t u8g_data_pin;
<a name="l06507"></a>06507 uint8_t u8g_clock_pin;
<a name="l06508"></a>06508 
<a name="l06509"></a>06509 <span class="keyword">static</span> <span class="keywordtype">void</span> u8g_com_arduino_init_shift_out(uint8_t dataPin, uint8_t clockPin)
<a name="l06510"></a>06510 {
<a name="l06511"></a>06511   u8g_data_pin = dataPin;
<a name="l06512"></a>06512   u8g_clock_pin = clockPin;
<a name="l06513"></a>06513 }
<a name="l06514"></a>06514 
<a name="l06515"></a>06515 <span class="keyword">static</span> <span class="keywordtype">void</span> u8g_com_arduino_do_shift_out_msb_first(uint8_t val)
<a name="l06516"></a>06516 {
<a name="l06517"></a>06517   uint8_t cnt = 8;
<a name="l06518"></a>06518   <span class="keywordflow">do</span>
<a name="l06519"></a>06519   {
<a name="l06520"></a>06520 <span class="preprocessor">#ifdef UI_SPI_MOSI</span>
<a name="l06521"></a>06521 <span class="preprocessor"></span>    <a class="code" href="fastio_8h.html#a3d38c0667426652d3fa2eb62f23e1591" title="Write to a pin wrapper.">WRITE</a>(UI_SPI_MOSI,val &amp; 128);
<a name="l06522"></a>06522 <span class="preprocessor">#else</span>
<a name="l06523"></a>06523 <span class="preprocessor"></span>    <span class="keywordflow">if</span> ( val &amp; 128 )
<a name="l06524"></a>06524         digitalWrite(u8g_data_pin, HIGH);
<a name="l06525"></a>06525     <span class="keywordflow">else</span>
<a name="l06526"></a>06526         digitalWrite(u8g_data_pin, LOW);
<a name="l06527"></a>06527 <span class="preprocessor">#endif</span>
<a name="l06528"></a>06528 <span class="preprocessor"></span>    val &lt;&lt;= 1;
<a name="l06529"></a>06529     <span class="comment">//u8g_MicroDelay();</span>
<a name="l06530"></a>06530 <span class="preprocessor">#ifdef UI_SPI_SCK</span>
<a name="l06531"></a>06531 <span class="preprocessor"></span>    <a class="code" href="fastio_8h.html#a3d38c0667426652d3fa2eb62f23e1591" title="Write to a pin wrapper.">WRITE</a>(UI_SPI_SCK,LOW);
<a name="l06532"></a>06532 <span class="preprocessor">#else</span>
<a name="l06533"></a>06533 <span class="preprocessor"></span>    digitalWrite(u8g_clock_pin, LOW);
<a name="l06534"></a>06534 <span class="preprocessor">#endif</span>
<a name="l06535"></a>06535 <span class="preprocessor"></span>    cnt--;
<a name="l06536"></a>06536     <a class="code" href="u8glib__ex_8h.html#a1920961449fcdb3579c6c7e3d6e41877">u8g_MicroDelay</a>();
<a name="l06537"></a>06537 <span class="preprocessor">#ifdef UI_SPI_SCK</span>
<a name="l06538"></a>06538 <span class="preprocessor"></span>    <a class="code" href="fastio_8h.html#a3d38c0667426652d3fa2eb62f23e1591" title="Write to a pin wrapper.">WRITE</a>(UI_SPI_SCK,HIGH);
<a name="l06539"></a>06539 <span class="preprocessor">#else</span>
<a name="l06540"></a>06540 <span class="preprocessor"></span>    digitalWrite(u8g_clock_pin, HIGH);
<a name="l06541"></a>06541 <span class="preprocessor">#endif</span>
<a name="l06542"></a>06542 <span class="preprocessor"></span>    <a class="code" href="u8glib__ex_8h.html#a1920961449fcdb3579c6c7e3d6e41877">u8g_MicroDelay</a>();
<a name="l06543"></a>06543   } <span class="keywordflow">while</span>( cnt != 0 );
<a name="l06544"></a>06544 }
<a name="l06545"></a>06545 
<a name="l06546"></a>06546 <span class="preprocessor">#endif</span>
<a name="l06547"></a>06547 <span class="preprocessor"></span>
<a name="l06548"></a>06548 
<a name="l06549"></a>06549 <span class="keyword">static</span> <span class="keywordtype">void</span> u8g_com_arduino_st7920_write_byte_seq(uint8_t rs, uint8_t *ptr, uint8_t len)
<a name="l06550"></a>06550 {
<a name="l06551"></a>06551   uint8_t i;
<a name="l06552"></a>06552 
<a name="l06553"></a>06553   <span class="keywordflow">if</span> ( rs == 0 )
<a name="l06554"></a>06554   {
<a name="l06555"></a>06555     <span class="comment">/* command */</span>
<a name="l06556"></a>06556     u8g_com_arduino_do_shift_out_msb_first(0x0f8);
<a name="l06557"></a>06557   }
<a name="l06558"></a>06558   <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( rs == 1 )
<a name="l06559"></a>06559   {
<a name="l06560"></a>06560     <span class="comment">/* data */</span>
<a name="l06561"></a>06561     u8g_com_arduino_do_shift_out_msb_first(0x0fa);
<a name="l06562"></a>06562   }
<a name="l06563"></a>06563 
<a name="l06564"></a>06564   <span class="keywordflow">while</span>( len &gt; 0 )
<a name="l06565"></a>06565   {
<a name="l06566"></a>06566     u8g_com_arduino_do_shift_out_msb_first(*ptr &amp; 0x0f0);
<a name="l06567"></a>06567     u8g_com_arduino_do_shift_out_msb_first(*ptr &lt;&lt; 4);
<a name="l06568"></a>06568     ptr++;
<a name="l06569"></a>06569     len--;
<a name="l06570"></a>06570     <a class="code" href="u8glib__ex_8h.html#ad7fff136315eef65dcb8939cfaf7b30e">u8g_10MicroDelay</a>();
<a name="l06571"></a>06571   }
<a name="l06572"></a>06572 
<a name="l06573"></a>06573   <span class="keywordflow">for</span>( i = 0; i &lt; 4; i++ )
<a name="l06574"></a>06574     <a class="code" href="u8glib__ex_8h.html#ad7fff136315eef65dcb8939cfaf7b30e">u8g_10MicroDelay</a>();
<a name="l06575"></a>06575 }
<a name="l06576"></a>06576 
<a name="l06577"></a>06577 <span class="keyword">static</span> <span class="keywordtype">void</span> u8g_com_arduino_st7920_write_byte(uint8_t rs, uint8_t val)
<a name="l06578"></a>06578 {
<a name="l06579"></a>06579   uint8_t i;
<a name="l06580"></a>06580 
<a name="l06581"></a>06581   <span class="keywordflow">if</span> ( rs == 0 )
<a name="l06582"></a>06582   {
<a name="l06583"></a>06583     <span class="comment">/* command */</span>
<a name="l06584"></a>06584     u8g_com_arduino_do_shift_out_msb_first(0x0f8);
<a name="l06585"></a>06585   }
<a name="l06586"></a>06586   <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( rs == 1 )
<a name="l06587"></a>06587   {
<a name="l06588"></a>06588     <span class="comment">/* data */</span>
<a name="l06589"></a>06589     u8g_com_arduino_do_shift_out_msb_first(0x0fa);
<a name="l06590"></a>06590   }
<a name="l06591"></a>06591 
<a name="l06592"></a>06592   u8g_com_arduino_do_shift_out_msb_first(val &amp; 0x0f0);
<a name="l06593"></a>06593   u8g_com_arduino_do_shift_out_msb_first(val &lt;&lt; 4);
<a name="l06594"></a>06594 
<a name="l06595"></a>06595   <span class="keywordflow">for</span>( i = 0; i &lt; 4; i++ )
<a name="l06596"></a>06596     <a class="code" href="u8glib__ex_8h.html#ad7fff136315eef65dcb8939cfaf7b30e">u8g_10MicroDelay</a>();
<a name="l06597"></a>06597 
<a name="l06598"></a>06598 }
<a name="l06599"></a>06599 
<a name="l06600"></a>06600 
<a name="l06601"></a>06601 uint8_t <a class="code" href="u8glib__ex_8h.html#a673c4d08638ec3da5284cf9aaac3ac00">u8g_com_arduino_st7920_spi_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t msg, uint8_t arg_val, <span class="keywordtype">void</span> *arg_ptr)
<a name="l06602"></a>06602 {
<a name="l06603"></a>06603   <span class="keywordflow">switch</span>(msg)
<a name="l06604"></a>06604   {
<a name="l06605"></a>06605     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#a4c4b2a86756c48511ee2d80fdce8fdc1">U8G_COM_MSG_INIT</a>:
<a name="l06606"></a>06606       <a class="code" href="u8glib__ex_8h.html#a4429917c6f548b28732dbc09d4c3eb08">u8g_com_arduino_assign_pin_output_high</a>(u8g);
<a name="l06607"></a>06607 <span class="preprocessor">#ifdef UI_SPI_CS</span>
<a name="l06608"></a>06608 <span class="preprocessor"></span>      <a class="code" href="fastio_8h.html#a3d38c0667426652d3fa2eb62f23e1591" title="Write to a pin wrapper.">WRITE</a>(UI_SPI_CS,LOW);
<a name="l06609"></a>06609 <span class="preprocessor">#else</span>
<a name="l06610"></a>06610 <span class="preprocessor"></span>      <a class="code" href="u8glib__ex_8h.html#ab23512398e22c34ec912a3f2bf86234d">u8g_com_arduino_digital_write</a>(u8g, <a class="code" href="u8glib__ex_8h.html#a4fa6b381ad482e6c679f73388c28a1d3">U8G_PI_CS</a>, LOW);
<a name="l06611"></a>06611 <span class="preprocessor">#endif</span>
<a name="l06612"></a>06612 <span class="preprocessor"></span>      <span class="comment">// u8g_com_arduino_digital_write(u8g, U8G_PI_SCK, LOW);</span>
<a name="l06613"></a>06613 <span class="preprocessor">#ifdef UI_SPI_SCK</span>
<a name="l06614"></a>06614 <span class="preprocessor"></span>        <a class="code" href="fastio_8h.html#a3d38c0667426652d3fa2eb62f23e1591" title="Write to a pin wrapper.">WRITE</a>(UI_SPI_SCK,HIGH);
<a name="l06615"></a>06615 <span class="preprocessor">#else</span>
<a name="l06616"></a>06616 <span class="preprocessor"></span>      <a class="code" href="u8glib__ex_8h.html#ab23512398e22c34ec912a3f2bf86234d">u8g_com_arduino_digital_write</a>(u8g, <a class="code" href="u8glib__ex_8h.html#a204d15080393ba561cf64aea48892c9c">U8G_PI_SCK</a>, HIGH);
<a name="l06617"></a>06617 <span class="preprocessor">#endif</span>
<a name="l06618"></a>06618 <span class="preprocessor"></span><span class="preprocessor">#ifdef UI_SPI_MOSI</span>
<a name="l06619"></a>06619 <span class="preprocessor"></span>      <a class="code" href="fastio_8h.html#a3d38c0667426652d3fa2eb62f23e1591" title="Write to a pin wrapper.">WRITE</a>(UI_SPI_MOSI,LOW);
<a name="l06620"></a>06620 <span class="preprocessor">#else</span>
<a name="l06621"></a>06621 <span class="preprocessor"></span>      <a class="code" href="u8glib__ex_8h.html#ab23512398e22c34ec912a3f2bf86234d">u8g_com_arduino_digital_write</a>(u8g, <a class="code" href="u8glib__ex_8h.html#ac2fece13a6875b4bb4c040c3f6f6cded">U8G_PI_MOSI</a>, LOW);
<a name="l06622"></a>06622 <span class="preprocessor">#endif</span>
<a name="l06623"></a>06623 <span class="preprocessor"></span>      u8g_com_arduino_init_shift_out(u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#ac2fece13a6875b4bb4c040c3f6f6cded">U8G_PI_MOSI</a>], u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a204d15080393ba561cf64aea48892c9c">U8G_PI_SCK</a>]);
<a name="l06624"></a>06624       u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a7d70a99410516bad7b6c3c6d1a9e45e6">U8G_PI_A0_STATE</a>] = 0;       <span class="comment">/* inital RS state: command mode */</span>
<a name="l06625"></a>06625       <span class="keywordflow">break</span>;
<a name="l06626"></a>06626 
<a name="l06627"></a>06627     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#a225a41aaa3afd074315faf810d8c72b7">U8G_COM_MSG_STOP</a>:
<a name="l06628"></a>06628       <span class="keywordflow">break</span>;
<a name="l06629"></a>06629 
<a name="l06630"></a>06630     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#ae9e98c1cadea862056b3684ea79626c7">U8G_COM_MSG_RESET</a>:
<a name="l06631"></a>06631       <span class="keywordflow">if</span> ( u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#ac45f46016ed7f6fbd43ec109db4b14f6">U8G_PI_RESET</a>] != <a class="code" href="u8glib__ex_8h.html#a95eb8a56571912e17c5f40da8a068c33">U8G_PIN_NONE</a> )
<a name="l06632"></a>06632         <a class="code" href="u8glib__ex_8h.html#ab23512398e22c34ec912a3f2bf86234d">u8g_com_arduino_digital_write</a>(u8g, <a class="code" href="u8glib__ex_8h.html#ac45f46016ed7f6fbd43ec109db4b14f6">U8G_PI_RESET</a>, arg_val);
<a name="l06633"></a>06633       <span class="keywordflow">break</span>;
<a name="l06634"></a>06634 
<a name="l06635"></a>06635     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#ac5b6ded098abcb5de9ab579c2c278dec">U8G_COM_MSG_CHIP_SELECT</a>:
<a name="l06636"></a>06636 <span class="preprocessor">#ifdef UI_SPI_CS</span>
<a name="l06637"></a>06637 <span class="preprocessor"></span>      <a class="code" href="fastio_8h.html#a3d38c0667426652d3fa2eb62f23e1591" title="Write to a pin wrapper.">WRITE</a>(UI_SPI_CS,arg_val);
<a name="l06638"></a>06638 <span class="preprocessor">#else</span>
<a name="l06639"></a>06639 <span class="preprocessor"></span>      <span class="keywordflow">if</span> ( arg_val == 0 )
<a name="l06640"></a>06640       {
<a name="l06641"></a>06641         <span class="comment">/* disable, note: the st7920 has an active high chip select */</span>
<a name="l06642"></a>06642         <a class="code" href="u8glib__ex_8h.html#ab23512398e22c34ec912a3f2bf86234d">u8g_com_arduino_digital_write</a>(u8g, <a class="code" href="u8glib__ex_8h.html#a4fa6b381ad482e6c679f73388c28a1d3">U8G_PI_CS</a>, LOW);
<a name="l06643"></a>06643       }
<a name="l06644"></a>06644       <span class="keywordflow">else</span>
<a name="l06645"></a>06645       {
<a name="l06646"></a>06646         <span class="comment">/* enable */</span>
<a name="l06647"></a>06647         <span class="comment">//u8g_com_arduino_digital_write(u8g, U8G_PI_SCK, HIGH);</span>
<a name="l06648"></a>06648         <a class="code" href="u8glib__ex_8h.html#ab23512398e22c34ec912a3f2bf86234d">u8g_com_arduino_digital_write</a>(u8g, <a class="code" href="u8glib__ex_8h.html#a4fa6b381ad482e6c679f73388c28a1d3">U8G_PI_CS</a>, HIGH);
<a name="l06649"></a>06649       }
<a name="l06650"></a>06650 <span class="preprocessor">#endif</span>
<a name="l06651"></a>06651 <span class="preprocessor"></span>      <span class="keywordflow">break</span>;
<a name="l06652"></a>06652 
<a name="l06653"></a>06653     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#a6554b69b48d471383ab4742e0646faa7">U8G_COM_MSG_WRITE_BYTE</a>:
<a name="l06654"></a>06654       u8g_com_arduino_st7920_write_byte( u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a7d70a99410516bad7b6c3c6d1a9e45e6">U8G_PI_A0_STATE</a>], arg_val);
<a name="l06655"></a>06655       <span class="comment">//u8g-&gt;pin_list[U8G_PI_A0_STATE] = 2;</span>
<a name="l06656"></a>06656       <span class="comment">//u8g_arduino_sw_spi_shift_out(u8g-&gt;pin_list[U8G_PI_MOSI], u8g-&gt;pin_list[U8G_PI_SCK], arg_val);</span>
<a name="l06657"></a>06657       <span class="keywordflow">break</span>;
<a name="l06658"></a>06658 
<a name="l06659"></a>06659     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#abee7a3415b37581dc37a340be97ecccc">U8G_COM_MSG_WRITE_SEQ</a>:
<a name="l06660"></a>06660       u8g_com_arduino_st7920_write_byte_seq(u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a7d70a99410516bad7b6c3c6d1a9e45e6">U8G_PI_A0_STATE</a>], (uint8_t *)arg_ptr, arg_val);
<a name="l06661"></a>06661       <span class="keywordflow">break</span>;
<a name="l06662"></a>06662 
<a name="l06663"></a>06663       <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#a913bfd86af5347f33acb243e9d40743c">U8G_COM_MSG_WRITE_SEQ_P</a>:
<a name="l06664"></a>06664       {
<a name="l06665"></a>06665         <span class="keyword">register</span> uint8_t *ptr = (uint8_t*)arg_ptr;
<a name="l06666"></a>06666         <span class="keywordflow">while</span>( arg_val &gt; 0 )
<a name="l06667"></a>06667         {
<a name="l06668"></a>06668           u8g_com_arduino_st7920_write_byte(u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a7d70a99410516bad7b6c3c6d1a9e45e6">U8G_PI_A0_STATE</a>], <a class="code" href="u8glib__ex_8h.html#a5b9b3f95e647dfe5f83fac8fabb1c3e7">u8g_pgm_read</a>(ptr) );
<a name="l06669"></a>06669           <span class="comment">//u8g-&gt;pin_list[U8G_PI_A0_STATE] = 2;</span>
<a name="l06670"></a>06670           ptr++;
<a name="l06671"></a>06671           arg_val--;
<a name="l06672"></a>06672         }
<a name="l06673"></a>06673       }
<a name="l06674"></a>06674       <span class="keywordflow">break</span>;
<a name="l06675"></a>06675 
<a name="l06676"></a>06676     <span class="keywordflow">case</span> <a class="code" href="u8glib__ex_8h.html#a707738f973a52f84081b6e8243f24b93">U8G_COM_MSG_ADDRESS</a>:                     <span class="comment">/* define cmd (arg_val = 0) or data mode (arg_val = 1) */</span>
<a name="l06677"></a>06677       u8g-&gt;pin_list[<a class="code" href="u8glib__ex_8h.html#a7d70a99410516bad7b6c3c6d1a9e45e6">U8G_PI_A0_STATE</a>] = arg_val;
<a name="l06678"></a>06678       <span class="keywordflow">break</span>;
<a name="l06679"></a>06679   }
<a name="l06680"></a>06680   <span class="keywordflow">return</span> 1;
<a name="l06681"></a>06681 }
<a name="l06682"></a>06682 
<a name="l06683"></a>06683 <span class="preprocessor">#else </span><span class="comment">/* ARDUINO */</span>
<a name="l06684"></a>06684 
<a name="l06685"></a><a class="code" href="u8glib__ex_8h.html#a673c4d08638ec3da5284cf9aaac3ac00">06685</a> uint8_t <a class="code" href="u8glib__ex_8h.html#a673c4d08638ec3da5284cf9aaac3ac00">u8g_com_arduino_st7920_spi_fn</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t msg, uint8_t arg_val, <span class="keywordtype">void</span> *arg_ptr)
<a name="l06686"></a>06686 {
<a name="l06687"></a>06687   <span class="keywordflow">return</span> 1;
<a name="l06688"></a>06688 }
<a name="l06689"></a>06689 
<a name="l06690"></a>06690 <span class="preprocessor">#endif </span><span class="comment">/* ARDUINO */</span>
<a name="l06691"></a>06691 
<a name="l06692"></a>06692 <span class="comment">// ============= u8g_com_arduino_common.c =============</span>
<a name="l06693"></a>06693 <span class="comment">/*</span>
<a name="l06694"></a>06694 <span class="comment"></span>
<a name="l06695"></a>06695 <span class="comment">  u8g_com_arduino_common.c</span>
<a name="l06696"></a>06696 <span class="comment"></span>
<a name="l06697"></a>06697 <span class="comment">  shared procedures for the arduino communication procedures</span>
<a name="l06698"></a>06698 <span class="comment"></span>
<a name="l06699"></a>06699 <span class="comment">  Universal 8bit Graphics Library</span>
<a name="l06700"></a>06700 <span class="comment"></span>
<a name="l06701"></a>06701 <span class="comment">  Copyright (c) 2011, olikraus@gmail.com</span>
<a name="l06702"></a>06702 <span class="comment">  All rights reserved.</span>
<a name="l06703"></a>06703 <span class="comment"></span>
<a name="l06704"></a>06704 <span class="comment">  Redistribution and use in source and binary forms, with or without modification,</span>
<a name="l06705"></a>06705 <span class="comment">  are permitted provided that the following conditions are met:</span>
<a name="l06706"></a>06706 <span class="comment"></span>
<a name="l06707"></a>06707 <span class="comment">  * Redistributions of source code must retain the above copyright notice, this list</span>
<a name="l06708"></a>06708 <span class="comment">    of conditions and the following disclaimer.</span>
<a name="l06709"></a>06709 <span class="comment"></span>
<a name="l06710"></a>06710 <span class="comment">  * Redistributions in binary form must reproduce the above copyright notice, this</span>
<a name="l06711"></a>06711 <span class="comment">    list of conditions and the following disclaimer in the documentation and/or other</span>
<a name="l06712"></a>06712 <span class="comment">    materials provided with the distribution.</span>
<a name="l06713"></a>06713 <span class="comment"></span>
<a name="l06714"></a>06714 <span class="comment">  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND</span>
<a name="l06715"></a>06715 <span class="comment">  CONTRIBUTORS &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES,</span>
<a name="l06716"></a>06716 <span class="comment">  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF</span>
<a name="l06717"></a>06717 <span class="comment">  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span>
<a name="l06718"></a>06718 <span class="comment">  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR</span>
<a name="l06719"></a>06719 <span class="comment">  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</span>
<a name="l06720"></a>06720 <span class="comment">  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT</span>
<a name="l06721"></a>06721 <span class="comment">  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span>
<a name="l06722"></a>06722 <span class="comment">  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span>
<a name="l06723"></a>06723 <span class="comment">  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,</span>
<a name="l06724"></a>06724 <span class="comment">  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span>
<a name="l06725"></a>06725 <span class="comment">  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF</span>
<a name="l06726"></a>06726 <span class="comment">  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span>
<a name="l06727"></a>06727 <span class="comment"></span>
<a name="l06728"></a>06728 <span class="comment"></span>
<a name="l06729"></a>06729 <span class="comment">*/</span>
<a name="l06730"></a>06730 
<a name="l06731"></a>06731 
<a name="l06732"></a>06732 <span class="preprocessor">#if defined(ARDUINO)</span>
<a name="l06733"></a>06733 <span class="preprocessor"></span>
<a name="l06734"></a>06734 
<a name="l06735"></a>06735 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#ab23512398e22c34ec912a3f2bf86234d">u8g_com_arduino_digital_write</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, uint8_t pin_index, uint8_t value)
<a name="l06736"></a>06736 {
<a name="l06737"></a>06737   uint8_t pin;
<a name="l06738"></a>06738   pin = u8g-&gt;pin_list[pin_index];
<a name="l06739"></a>06739   <span class="keywordflow">if</span> ( pin != <a class="code" href="u8glib__ex_8h.html#a95eb8a56571912e17c5f40da8a068c33">U8G_PIN_NONE</a> )
<a name="l06740"></a>06740     digitalWrite(pin, value);
<a name="l06741"></a>06741 }
<a name="l06742"></a>06742 
<a name="l06743"></a>06743 <span class="comment">/* this procedure does not set the RW pin */</span>
<a name="l06744"></a>06744 <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a4429917c6f548b28732dbc09d4c3eb08">u8g_com_arduino_assign_pin_output_high</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g)
<a name="l06745"></a>06745 {
<a name="l06746"></a>06746   uint8_t i;
<a name="l06747"></a>06747   <span class="comment">/* skip the RW pin, which is the last pin in the list */</span>
<a name="l06748"></a>06748   <span class="keywordflow">for</span>( i = 0; i &lt; <a class="code" href="u8glib__ex_8h.html#a69ec203b2b752cafbf4abfb8eae3e2dc">U8G_PIN_LIST_LEN</a>-1; i++ )
<a name="l06749"></a>06749   {
<a name="l06750"></a>06750     <span class="keywordflow">if</span> ( u8g-&gt;pin_list[i] != <a class="code" href="u8glib__ex_8h.html#a95eb8a56571912e17c5f40da8a068c33">U8G_PIN_NONE</a> )
<a name="l06751"></a>06751     {
<a name="l06752"></a>06752       pinMode(u8g-&gt;pin_list[i], OUTPUT);
<a name="l06753"></a>06753       digitalWrite(u8g-&gt;pin_list[i], HIGH);
<a name="l06754"></a>06754     }
<a name="l06755"></a>06755   }
<a name="l06756"></a>06756 }
<a name="l06757"></a>06757 
<a name="l06758"></a>06758 
<a name="l06759"></a>06759 <span class="preprocessor">#endif</span>
<a name="l06760"></a>06760 <span class="preprocessor"></span>
<a name="l06761"></a>06761 <span class="comment">/*</span>
<a name="l06762"></a>06762 <span class="comment"></span>
<a name="l06763"></a>06763 <span class="comment">  u8g_pb.c</span>
<a name="l06764"></a>06764 <span class="comment"></span>
<a name="l06765"></a>06765 <span class="comment">  common procedures for the page buffer</span>
<a name="l06766"></a>06766 <span class="comment"></span>
<a name="l06767"></a>06767 <span class="comment">  Universal 8bit Graphics Library</span>
<a name="l06768"></a>06768 <span class="comment"></span>
<a name="l06769"></a>06769 <span class="comment">  Copyright (c) 2011, olikraus@gmail.com</span>
<a name="l06770"></a>06770 <span class="comment">  All rights reserved.</span>
<a name="l06771"></a>06771 <span class="comment"></span>
<a name="l06772"></a>06772 <span class="comment">  Redistribution and use in source and binary forms, with or without modification,</span>
<a name="l06773"></a>06773 <span class="comment">  are permitted provided that the following conditions are met:</span>
<a name="l06774"></a>06774 <span class="comment"></span>
<a name="l06775"></a>06775 <span class="comment">  * Redistributions of source code must retain the above copyright notice, this list</span>
<a name="l06776"></a>06776 <span class="comment">    of conditions and the following disclaimer.</span>
<a name="l06777"></a>06777 <span class="comment"></span>
<a name="l06778"></a>06778 <span class="comment">  * Redistributions in binary form must reproduce the above copyright notice, this</span>
<a name="l06779"></a>06779 <span class="comment">    list of conditions and the following disclaimer in the documentation and/or other</span>
<a name="l06780"></a>06780 <span class="comment">    materials provided with the distribution.</span>
<a name="l06781"></a>06781 <span class="comment"></span>
<a name="l06782"></a>06782 <span class="comment">  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND</span>
<a name="l06783"></a>06783 <span class="comment">  CONTRIBUTORS &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES,</span>
<a name="l06784"></a>06784 <span class="comment">  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF</span>
<a name="l06785"></a>06785 <span class="comment">  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span>
<a name="l06786"></a>06786 <span class="comment">  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR</span>
<a name="l06787"></a>06787 <span class="comment">  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</span>
<a name="l06788"></a>06788 <span class="comment">  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT</span>
<a name="l06789"></a>06789 <span class="comment">  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span>
<a name="l06790"></a>06790 <span class="comment">  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span>
<a name="l06791"></a>06791 <span class="comment">  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,</span>
<a name="l06792"></a>06792 <span class="comment">  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span>
<a name="l06793"></a>06793 <span class="comment">  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF</span>
<a name="l06794"></a>06794 <span class="comment">  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span>
<a name="l06795"></a>06795 <span class="comment"></span>
<a name="l06796"></a>06796 <span class="comment"></span>
<a name="l06797"></a>06797 <span class="comment">*/</span>
<a name="l06798"></a>06798 
<a name="l06799"></a>06799 
<a name="l06800"></a><a class="code" href="u8glib__ex_8h.html#a70f71de3c3bb7ba529e5b078350c9f9f">06800</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a70f71de3c3bb7ba529e5b078350c9f9f">u8g_pb_Clear</a>(<a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> *b)
<a name="l06801"></a>06801 {
<a name="l06802"></a>06802   uint8_t *ptr = (uint8_t *)b-&gt;<a class="code" href="struct__u8g__pb__t.html#a5bc5fa69bee375df074734a2c4858604">buf</a>;
<a name="l06803"></a>06803   uint8_t *end_ptr = ptr;
<a name="l06804"></a>06804   end_ptr += b-&gt;<a class="code" href="struct__u8g__pb__t.html#a12c3336a1bb53db20c777c05c17705b9">width</a>;
<a name="l06805"></a>06805   <span class="keywordflow">do</span>
<a name="l06806"></a>06806   {
<a name="l06807"></a>06807     *ptr++ = 0;
<a name="l06808"></a>06808   } <span class="keywordflow">while</span>( ptr != end_ptr );
<a name="l06809"></a>06809 }
<a name="l06810"></a>06810 
<a name="l06811"></a>06811 <span class="comment">/* the following procedure does not work. why? Can be checked with descpic */</span>
<a name="l06812"></a>06812 <span class="comment">/*</span>
<a name="l06813"></a>06813 <span class="comment">void u8g_pb_Clear(u8g_pb_t *b)</span>
<a name="l06814"></a>06814 <span class="comment">{</span>
<a name="l06815"></a>06815 <span class="comment">  uint8_t *ptr = (uint8_t *)b-&gt;buf;</span>
<a name="l06816"></a>06816 <span class="comment">  uint8_t cnt = b-&gt;width;</span>
<a name="l06817"></a>06817 <span class="comment">  do</span>
<a name="l06818"></a>06818 <span class="comment">  {</span>
<a name="l06819"></a>06819 <span class="comment">    *ptr++ = 0;</span>
<a name="l06820"></a>06820 <span class="comment">    cnt--;</span>
<a name="l06821"></a>06821 <span class="comment">  } while( cnt != 0 );</span>
<a name="l06822"></a>06822 <span class="comment">}</span>
<a name="l06823"></a>06823 <span class="comment">*/</span>
<a name="l06824"></a>06824 
<a name="l06825"></a>06825 <span class="comment">/*</span>
<a name="l06826"></a>06826 <span class="comment">  intersection assumptions:</span>
<a name="l06827"></a>06827 <span class="comment">    a1 &lt;= a2 is always true</span>
<a name="l06828"></a>06828 <span class="comment">*/</span>
<a name="l06829"></a>06829   <span class="comment">/*</span>
<a name="l06830"></a>06830 <span class="comment">    minimized version</span>
<a name="l06831"></a>06831 <span class="comment">    ---1----0 1             b1 &lt;= a2 &amp;&amp; b1 &gt; b2</span>
<a name="l06832"></a>06832 <span class="comment">    -----1--0 1             b2 &gt;= a1 &amp;&amp; b1 &gt; b2</span>
<a name="l06833"></a>06833 <span class="comment">    ---1-1--- 1             b1 &lt;= a2 &amp;&amp; b2 &gt;= a1</span>
<a name="l06834"></a>06834 <span class="comment">  */</span>
<a name="l06835"></a>06835 <span class="comment">/*</span>
<a name="l06836"></a>06836 <span class="comment">uint8_t u8g_pb8v1_IsYIntersection___Old(u8g_pb_t *b, u8g_uint_t v0, u8g_uint_t v1)</span>
<a name="l06837"></a>06837 <span class="comment">{</span>
<a name="l06838"></a>06838 <span class="comment">  uint8_t c0, c1, c;</span>
<a name="l06839"></a>06839 <span class="comment">  c0 = v0 &lt;= b-&gt;p.page_y1;</span>
<a name="l06840"></a>06840 <span class="comment">  c1 = v1 &gt;= b-&gt;p.page_y0;</span>
<a name="l06841"></a>06841 <span class="comment">  c = v0 &gt; v1;</span>
<a name="l06842"></a>06842 <span class="comment">  if ( c0 &amp;&amp; c1 ) return 1;</span>
<a name="l06843"></a>06843 <span class="comment">  if ( c0 &amp;&amp; c ) return 1;</span>
<a name="l06844"></a>06844 <span class="comment">  if ( c1 &amp;&amp; c ) return 1;</span>
<a name="l06845"></a>06845 <span class="comment">  return 0;</span>
<a name="l06846"></a>06846 <span class="comment">}</span>
<a name="l06847"></a>06847 <span class="comment">*/</span>
<a name="l06848"></a>06848 
<a name="l06849"></a><a class="code" href="u8glib__ex_8h.html#ab71ac82987eb642112cf773491f00e18">06849</a> uint8_t <a class="code" href="u8glib__ex_8h.html#ab71ac82987eb642112cf773491f00e18">u8g_pb_IsYIntersection</a>(<a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> *pb, u8g_uint_t v0, u8g_uint_t v1)
<a name="l06850"></a>06850 {
<a name="l06851"></a>06851   uint8_t c1, c2, c3, tmp;
<a name="l06852"></a>06852   c1 = v0 &lt;= pb-&gt;<a class="code" href="struct__u8g__pb__t.html#ad86061e0a24796ae7c1752e6f25ecb97">p</a>.<a class="code" href="struct__u8g__page__t.html#ad80e065e972df7c230dccebf745006fb">page_y1</a>;
<a name="l06853"></a>06853   c2 = v1 &gt;= pb-&gt;<a class="code" href="struct__u8g__pb__t.html#ad86061e0a24796ae7c1752e6f25ecb97">p</a>.<a class="code" href="struct__u8g__page__t.html#ad849a6c82137ac60b0a2bd19cbd21b5a">page_y0</a>;
<a name="l06854"></a>06854   c3 = v0 &gt; v1;
<a name="l06855"></a>06855   <span class="comment">/*</span>
<a name="l06856"></a>06856 <span class="comment">  if ( c1 &amp;&amp; c2 )</span>
<a name="l06857"></a>06857 <span class="comment">    return 1;</span>
<a name="l06858"></a>06858 <span class="comment">  if ( c1 &amp;&amp; c3 )</span>
<a name="l06859"></a>06859 <span class="comment">    return 1;</span>
<a name="l06860"></a>06860 <span class="comment">  if ( c2 &amp;&amp; c3 )</span>
<a name="l06861"></a>06861 <span class="comment">    return 1;</span>
<a name="l06862"></a>06862 <span class="comment">  return 0;</span>
<a name="l06863"></a>06863 <span class="comment">  */</span>
<a name="l06864"></a>06864 
<a name="l06865"></a>06865   tmp = c1;
<a name="l06866"></a>06866   c1 &amp;= c2;
<a name="l06867"></a>06867   c2 &amp;= c3;
<a name="l06868"></a>06868   c3 &amp;= tmp;
<a name="l06869"></a>06869   c1 |= c2;
<a name="l06870"></a>06870   c1 |= c3;
<a name="l06871"></a>06871   <span class="keywordflow">return</span> c1 &amp; 1;
<a name="l06872"></a>06872 }
<a name="l06873"></a>06873 
<a name="l06874"></a>06874 
<a name="l06875"></a><a class="code" href="u8glib__ex_8h.html#ae97993f551b67113ea14d9bd3fb71125">06875</a> uint8_t <a class="code" href="u8glib__ex_8h.html#ae97993f551b67113ea14d9bd3fb71125">u8g_pb_IsXIntersection</a>(<a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> *b, u8g_uint_t v0, u8g_uint_t v1)
<a name="l06876"></a>06876 {
<a name="l06877"></a>06877   uint8_t <span class="comment">/*c0, c1, */</span> c2, c3;
<a name="l06878"></a>06878   <span class="comment">/*</span>
<a name="l06879"></a>06879 <span class="comment">    conditions: b-&gt;p.page_y0 &lt; b-&gt;p.page_y1</span>
<a name="l06880"></a>06880 <span class="comment">    there are no restriction on v0 and v1. If v0 &gt; v1, then warp around unsigned is assumed</span>
<a name="l06881"></a>06881 <span class="comment">  */</span>
<a name="l06882"></a>06882   <span class="comment">/*</span>
<a name="l06883"></a>06883 <span class="comment">  c0 = v0 &lt; 0;</span>
<a name="l06884"></a>06884 <span class="comment">  c1 = v1 &lt; 0;</span>
<a name="l06885"></a>06885 <span class="comment">  */</span>
<a name="l06886"></a>06886   c2 = v0 &gt; b-&gt;<a class="code" href="struct__u8g__pb__t.html#a12c3336a1bb53db20c777c05c17705b9">width</a>;
<a name="l06887"></a>06887   c3 = v1 &gt; b-&gt;<a class="code" href="struct__u8g__pb__t.html#a12c3336a1bb53db20c777c05c17705b9">width</a>;
<a name="l06888"></a>06888   <span class="comment">/*if ( c0 &amp;&amp; c1 ) return 0;*/</span>
<a name="l06889"></a>06889   <span class="keywordflow">if</span> ( c2 &amp;&amp; c3 ) <span class="keywordflow">return</span> 0;
<a name="l06890"></a>06890   <span class="comment">/*if ( c1 &amp;&amp; c2 ) return 0;*/</span>
<a name="l06891"></a>06891   <span class="keywordflow">return</span> 1;
<a name="l06892"></a>06892 }
<a name="l06893"></a>06893 
<a name="l06894"></a><a class="code" href="u8glib__ex_8h.html#a5eb965cf1a843aed9f521843218f5ff3">06894</a> uint8_t <a class="code" href="u8glib__ex_8h.html#a5eb965cf1a843aed9f521843218f5ff3">u8g_pb_IsIntersection</a>(<a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> *pb, <a class="code" href="struct__u8g__dev__arg__bbx__t.html">u8g_dev_arg_bbx_t</a> *bbx)
<a name="l06895"></a>06895 {
<a name="l06896"></a>06896   u8g_uint_t tmp;
<a name="l06897"></a>06897 
<a name="l06898"></a>06898   tmp = bbx-&gt;<a class="code" href="struct__u8g__dev__arg__bbx__t.html#a14d91862d05b147bd3ddaa61dec19f21">y</a>;
<a name="l06899"></a>06899   tmp += bbx-&gt;<a class="code" href="struct__u8g__dev__arg__bbx__t.html#a3f4daedecdf3e9d710c56dcb6e80cecb">h</a>;
<a name="l06900"></a>06900   tmp--;
<a name="l06901"></a>06901 
<a name="l06902"></a>06902   <span class="keywordflow">if</span> ( <a class="code" href="u8glib__ex_8h.html#ab71ac82987eb642112cf773491f00e18">u8g_pb_IsYIntersection</a>(pb, bbx-&gt;<a class="code" href="struct__u8g__dev__arg__bbx__t.html#a14d91862d05b147bd3ddaa61dec19f21">y</a>, tmp) == 0 )
<a name="l06903"></a>06903     <span class="keywordflow">return</span> 0;
<a name="l06904"></a>06904 
<a name="l06905"></a>06905   <span class="comment">/* maybe this one can be skiped... probability is very high to have an intersection, so it would be ok to always return 1 */</span>
<a name="l06906"></a>06906   tmp = bbx-&gt;<a class="code" href="struct__u8g__dev__arg__bbx__t.html#a0bd126a4a84709451f22abb1c7c704d0">x</a>;
<a name="l06907"></a>06907   tmp += bbx-&gt;<a class="code" href="struct__u8g__dev__arg__bbx__t.html#aea376a9f764f4a9cf33e2c9ae174001a">w</a>;
<a name="l06908"></a>06908   tmp--;
<a name="l06909"></a>06909 
<a name="l06910"></a>06910   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#ae97993f551b67113ea14d9bd3fb71125">u8g_pb_IsXIntersection</a>(pb, bbx-&gt;<a class="code" href="struct__u8g__dev__arg__bbx__t.html#a0bd126a4a84709451f22abb1c7c704d0">x</a>, tmp);
<a name="l06911"></a>06911 }
<a name="l06912"></a>06912 
<a name="l06913"></a><a class="code" href="u8glib__ex_8h.html#af7f4944e409dbdf5e094992336a899a8">06913</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#af7f4944e409dbdf5e094992336a899a8">u8g_pb_GetPageBox</a>(<a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> *pb, <a class="code" href="struct__u8g__box__t.html">u8g_box_t</a> *box)
<a name="l06914"></a>06914 {
<a name="l06915"></a>06915   box-&gt;<a class="code" href="struct__u8g__box__t.html#a1551f8fbcff0e015b97c9d0a6fc83b7a">x0</a> = 0;
<a name="l06916"></a>06916   box-&gt;<a class="code" href="struct__u8g__box__t.html#a33614956497a398eeea02cf06ae0ee34">y0</a> = pb-&gt;<a class="code" href="struct__u8g__pb__t.html#ad86061e0a24796ae7c1752e6f25ecb97">p</a>.<a class="code" href="struct__u8g__page__t.html#ad849a6c82137ac60b0a2bd19cbd21b5a">page_y0</a>;
<a name="l06917"></a>06917   box-&gt;<a class="code" href="struct__u8g__box__t.html#ae903dfc85a06d24c856d01ecc888a805">x1</a> = pb-&gt;<a class="code" href="struct__u8g__pb__t.html#a12c3336a1bb53db20c777c05c17705b9">width</a>;
<a name="l06918"></a>06918   box-&gt;<a class="code" href="struct__u8g__box__t.html#ae903dfc85a06d24c856d01ecc888a805">x1</a>--;
<a name="l06919"></a>06919   box-&gt;<a class="code" href="struct__u8g__box__t.html#a8977e61ef70ab6db468b58d77b1031e4">y1</a> = pb-&gt;<a class="code" href="struct__u8g__pb__t.html#ad86061e0a24796ae7c1752e6f25ecb97">p</a>.<a class="code" href="struct__u8g__page__t.html#ad80e065e972df7c230dccebf745006fb">page_y1</a>;
<a name="l06920"></a>06920 }
<a name="l06921"></a>06921 
<a name="l06922"></a>06922 
<a name="l06923"></a><a class="code" href="u8glib__ex_8h.html#ae8f5a2c3e48da2a02fab5206f81af74f">06923</a> uint8_t <a class="code" href="u8glib__ex_8h.html#ae8f5a2c3e48da2a02fab5206f81af74f">u8g_pb_Is8PixelVisible</a>(<a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> *b, <a class="code" href="struct__u8g__dev__arg__pixel__t.html">u8g_dev_arg_pixel_t</a> *arg_pixel)
<a name="l06924"></a>06924 {
<a name="l06925"></a>06925   u8g_uint_t v0, v1;
<a name="l06926"></a>06926   v0 = arg_pixel-&gt;<a class="code" href="struct__u8g__dev__arg__pixel__t.html#a14d91862d05b147bd3ddaa61dec19f21">y</a>;
<a name="l06927"></a>06927   v1 = v0;
<a name="l06928"></a>06928   <span class="keywordflow">switch</span>( arg_pixel-&gt;<a class="code" href="struct__u8g__dev__arg__pixel__t.html#a92abda0bec7c1c978fe96f87aad18067">dir</a> )
<a name="l06929"></a>06929   {
<a name="l06930"></a>06930     <span class="keywordflow">case</span> 0:
<a name="l06931"></a>06931       <span class="keywordflow">break</span>;
<a name="l06932"></a>06932     <span class="keywordflow">case</span> 1:
<a name="l06933"></a>06933       v1 += 8;          <span class="comment">/* this is independent from the page height */</span>
<a name="l06934"></a>06934       <span class="keywordflow">break</span>;
<a name="l06935"></a>06935     <span class="keywordflow">case</span> 2:
<a name="l06936"></a>06936       <span class="keywordflow">break</span>;
<a name="l06937"></a>06937     <span class="keywordflow">case</span> 3:
<a name="l06938"></a>06938       v0 -= 8;
<a name="l06939"></a>06939       <span class="keywordflow">break</span>;
<a name="l06940"></a>06940   }
<a name="l06941"></a>06941   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#ab71ac82987eb642112cf773491f00e18">u8g_pb_IsYIntersection</a>(b, v0, v1);
<a name="l06942"></a>06942 }
<a name="l06943"></a>06943 
<a name="l06944"></a>06944 
<a name="l06945"></a>06945 
<a name="l06946"></a><a class="code" href="u8glib__ex_8h.html#a990b6e83983beb111503bef41d181d22">06946</a> uint8_t <a class="code" href="u8glib__ex_8h.html#a990b6e83983beb111503bef41d181d22">u8g_pb_WriteBuffer</a>(<a class="code" href="struct__u8g__pb__t.html">u8g_pb_t</a> *b, <a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, <a class="code" href="struct__u8g__dev__t.html">u8g_dev_t</a> *dev)
<a name="l06947"></a>06947 {
<a name="l06948"></a>06948   <span class="keywordflow">return</span> <a class="code" href="u8glib__ex_8h.html#a1a25a189f85f6d89161d63a14da5f044">u8g_WriteSequence</a>(u8g, dev, b-&gt;<a class="code" href="struct__u8g__pb__t.html#a12c3336a1bb53db20c777c05c17705b9">width</a>,(uint8_t*) b-&gt;<a class="code" href="struct__u8g__pb__t.html#a5bc5fa69bee375df074734a2c4858604">buf</a>);
<a name="l06949"></a>06949 }
<a name="l06950"></a>06950 
<a name="l06951"></a>06951 <span class="comment">/*</span>
<a name="l06952"></a>06952 <span class="comment"></span>
<a name="l06953"></a>06953 <span class="comment">  u8g_rect.c</span>
<a name="l06954"></a>06954 <span class="comment"></span>
<a name="l06955"></a>06955 <span class="comment">  U8G high level interface for horizontal and vertical things</span>
<a name="l06956"></a>06956 <span class="comment"></span>
<a name="l06957"></a>06957 <span class="comment">  Universal 8bit Graphics Library</span>
<a name="l06958"></a>06958 <span class="comment"></span>
<a name="l06959"></a>06959 <span class="comment">  Copyright (c) 2011, olikraus@gmail.com</span>
<a name="l06960"></a>06960 <span class="comment">  All rights reserved.</span>
<a name="l06961"></a>06961 <span class="comment"></span>
<a name="l06962"></a>06962 <span class="comment">  Redistribution and use in source and binary forms, with or without modification,</span>
<a name="l06963"></a>06963 <span class="comment">  are permitted provided that the following conditions are met:</span>
<a name="l06964"></a>06964 <span class="comment"></span>
<a name="l06965"></a>06965 <span class="comment">  * Redistributions of source code must retain the above copyright notice, this list</span>
<a name="l06966"></a>06966 <span class="comment">    of conditions and the following disclaimer.</span>
<a name="l06967"></a>06967 <span class="comment"></span>
<a name="l06968"></a>06968 <span class="comment">  * Redistributions in binary form must reproduce the above copyright notice, this</span>
<a name="l06969"></a>06969 <span class="comment">    list of conditions and the following disclaimer in the documentation and/or other</span>
<a name="l06970"></a>06970 <span class="comment">    materials provided with the distribution.</span>
<a name="l06971"></a>06971 <span class="comment"></span>
<a name="l06972"></a>06972 <span class="comment">  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND</span>
<a name="l06973"></a>06973 <span class="comment">  CONTRIBUTORS &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES,</span>
<a name="l06974"></a>06974 <span class="comment">  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF</span>
<a name="l06975"></a>06975 <span class="comment">  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE</span>
<a name="l06976"></a>06976 <span class="comment">  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR</span>
<a name="l06977"></a>06977 <span class="comment">  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</span>
<a name="l06978"></a>06978 <span class="comment">  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT</span>
<a name="l06979"></a>06979 <span class="comment">  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;</span>
<a name="l06980"></a>06980 <span class="comment">  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER</span>
<a name="l06981"></a>06981 <span class="comment">  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,</span>
<a name="l06982"></a>06982 <span class="comment">  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)</span>
<a name="l06983"></a>06983 <span class="comment">  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF</span>
<a name="l06984"></a>06984 <span class="comment">  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span>
<a name="l06985"></a>06985 <span class="comment"></span>
<a name="l06986"></a>06986 <span class="comment"></span>
<a name="l06987"></a>06987 <span class="comment">*/</span>
<a name="l06988"></a>06988 
<a name="l06989"></a><a class="code" href="u8glib__ex_8h.html#a55ac399ed0646821596a6886aea0e34b">06989</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a55ac399ed0646821596a6886aea0e34b">u8g_draw_hline</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w)
<a name="l06990"></a>06990 {
<a name="l06991"></a>06991   uint8_t pixel = 0x0ff;
<a name="l06992"></a>06992   <span class="keywordflow">while</span>( w &gt;= 8 )
<a name="l06993"></a>06993   {
<a name="l06994"></a>06994     <a class="code" href="u8glib__ex_8h.html#a541bde03a368db9b3bd043ce96100133">u8g_Draw8Pixel</a>(u8g, x, y, 0, pixel);
<a name="l06995"></a>06995     w-=8;
<a name="l06996"></a>06996     x+=8;
<a name="l06997"></a>06997   }
<a name="l06998"></a>06998   <span class="keywordflow">if</span> ( w != 0 )
<a name="l06999"></a>06999   {
<a name="l07000"></a>07000     w ^=7;
<a name="l07001"></a>07001     w++;
<a name="l07002"></a>07002     pixel &lt;&lt;= w&amp;7;
<a name="l07003"></a>07003     <a class="code" href="u8glib__ex_8h.html#a541bde03a368db9b3bd043ce96100133">u8g_Draw8Pixel</a>(u8g, x, y, 0, pixel);
<a name="l07004"></a>07004   }
<a name="l07005"></a>07005 }
<a name="l07006"></a>07006 
<a name="l07007"></a><a class="code" href="u8glib__ex_8h.html#a0d53baa01d614ca17974c795b8f3e4d3">07007</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a0d53baa01d614ca17974c795b8f3e4d3">u8g_draw_vline</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t h)
<a name="l07008"></a>07008 {
<a name="l07009"></a>07009   uint8_t pixel = 0x0ff;
<a name="l07010"></a>07010   <span class="keywordflow">while</span>( h &gt;= 8 )
<a name="l07011"></a>07011   {
<a name="l07012"></a>07012     <a class="code" href="u8glib__ex_8h.html#a541bde03a368db9b3bd043ce96100133">u8g_Draw8Pixel</a>(u8g, x, y, 1, pixel);
<a name="l07013"></a>07013     h-=8;
<a name="l07014"></a>07014     y+=8;
<a name="l07015"></a>07015   }
<a name="l07016"></a>07016   <span class="keywordflow">if</span> ( h != 0 )
<a name="l07017"></a>07017   {
<a name="l07018"></a>07018     h ^=7;
<a name="l07019"></a>07019     h++;
<a name="l07020"></a>07020     pixel &lt;&lt;= h&amp;7;
<a name="l07021"></a>07021     <a class="code" href="u8glib__ex_8h.html#a541bde03a368db9b3bd043ce96100133">u8g_Draw8Pixel</a>(u8g, x, y, 1, pixel);
<a name="l07022"></a>07022   }
<a name="l07023"></a>07023 }
<a name="l07024"></a>07024 
<a name="l07025"></a><a class="code" href="u8glib__ex_8h.html#a3a6eaa436ef223e13c617bc0bc635f8d">07025</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a3a6eaa436ef223e13c617bc0bc635f8d">u8g_DrawHLine</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w)
<a name="l07026"></a>07026 {
<a name="l07027"></a>07027   <span class="keywordflow">if</span> ( <a class="code" href="u8glib__ex_8h.html#a4ed53b97d1b77b8ecaff352f5b1c6161">u8g_IsBBXIntersection</a>(u8g, x, y, w, 1) == 0 )
<a name="l07028"></a>07028     <span class="keywordflow">return</span>;
<a name="l07029"></a>07029   <a class="code" href="u8glib__ex_8h.html#a55ac399ed0646821596a6886aea0e34b">u8g_draw_hline</a>(u8g, x, y, w);
<a name="l07030"></a>07030 }
<a name="l07031"></a>07031 
<a name="l07032"></a><a class="code" href="u8glib__ex_8h.html#a92f4575dca0eddb0b91f19470bfc718a">07032</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a92f4575dca0eddb0b91f19470bfc718a">u8g_DrawVLine</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w)
<a name="l07033"></a>07033 {
<a name="l07034"></a>07034   <span class="keywordflow">if</span> ( <a class="code" href="u8glib__ex_8h.html#a4ed53b97d1b77b8ecaff352f5b1c6161">u8g_IsBBXIntersection</a>(u8g, x, y, 1, w) == 0 )
<a name="l07035"></a>07035     <span class="keywordflow">return</span>;
<a name="l07036"></a>07036   <a class="code" href="u8glib__ex_8h.html#a0d53baa01d614ca17974c795b8f3e4d3">u8g_draw_vline</a>(u8g, x, y, w);
<a name="l07037"></a>07037 }
<a name="l07038"></a>07038 
<a name="l07039"></a>07039 <span class="comment">/* restrictions: w &gt; 0 &amp;&amp; h &gt; 0 */</span>
<a name="l07040"></a><a class="code" href="u8glib__ex_8h.html#a91723bfce86067c2e2c306536afb5b91">07040</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a91723bfce86067c2e2c306536afb5b91">u8g_DrawFrame</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h)
<a name="l07041"></a>07041 {
<a name="l07042"></a>07042   u8g_uint_t xtmp = x;
<a name="l07043"></a>07043 
<a name="l07044"></a>07044   <span class="keywordflow">if</span> ( <a class="code" href="u8glib__ex_8h.html#a4ed53b97d1b77b8ecaff352f5b1c6161">u8g_IsBBXIntersection</a>(u8g, x, y, w, h) == 0 )
<a name="l07045"></a>07045     <span class="keywordflow">return</span>;
<a name="l07046"></a>07046 
<a name="l07047"></a>07047 
<a name="l07048"></a>07048   <a class="code" href="u8glib__ex_8h.html#a55ac399ed0646821596a6886aea0e34b">u8g_draw_hline</a>(u8g, x, y, w);
<a name="l07049"></a>07049   <a class="code" href="u8glib__ex_8h.html#a0d53baa01d614ca17974c795b8f3e4d3">u8g_draw_vline</a>(u8g, x, y, h);
<a name="l07050"></a>07050   x+=w;
<a name="l07051"></a>07051   x--;
<a name="l07052"></a>07052   <a class="code" href="u8glib__ex_8h.html#a0d53baa01d614ca17974c795b8f3e4d3">u8g_draw_vline</a>(u8g, x, y, h);
<a name="l07053"></a>07053   y+=h;
<a name="l07054"></a>07054   y--;
<a name="l07055"></a>07055   <a class="code" href="u8glib__ex_8h.html#a55ac399ed0646821596a6886aea0e34b">u8g_draw_hline</a>(u8g, xtmp, y, w);
<a name="l07056"></a>07056 }
<a name="l07057"></a>07057 
<a name="l07058"></a><a class="code" href="u8glib__ex_8h.html#abee278737d88e8d77b6d7994a98f1f11">07058</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#abee278737d88e8d77b6d7994a98f1f11">u8g_draw_box</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h)
<a name="l07059"></a>07059 {
<a name="l07060"></a>07060   <span class="keywordflow">do</span>
<a name="l07061"></a>07061   {
<a name="l07062"></a>07062     <a class="code" href="u8glib__ex_8h.html#a55ac399ed0646821596a6886aea0e34b">u8g_draw_hline</a>(u8g, x, y, w);
<a name="l07063"></a>07063     y++;
<a name="l07064"></a>07064     h--;
<a name="l07065"></a>07065   } <span class="keywordflow">while</span>( h != 0 );
<a name="l07066"></a>07066 }
<a name="l07067"></a>07067 
<a name="l07068"></a>07068 <span class="comment">/* restrictions: h &gt; 0 */</span>
<a name="l07069"></a><a class="code" href="u8glib__ex_8h.html#a925514cc889c179cef06f852d28bc1b4">07069</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a925514cc889c179cef06f852d28bc1b4">u8g_DrawBox</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h)
<a name="l07070"></a>07070 {
<a name="l07071"></a>07071   <span class="keywordflow">if</span> ( <a class="code" href="u8glib__ex_8h.html#a4ed53b97d1b77b8ecaff352f5b1c6161">u8g_IsBBXIntersection</a>(u8g, x, y, w, h) == 0 )
<a name="l07072"></a>07072     <span class="keywordflow">return</span>;
<a name="l07073"></a>07073   <a class="code" href="u8glib__ex_8h.html#abee278737d88e8d77b6d7994a98f1f11">u8g_draw_box</a>(u8g, x, y, w, h);
<a name="l07074"></a>07074 }
<a name="l07075"></a>07075 
<a name="l07076"></a>07076 
<a name="l07077"></a><a class="code" href="u8glib__ex_8h.html#a0555ba859472030ec48497a9850024d7">07077</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a0555ba859472030ec48497a9850024d7">u8g_DrawRFrame</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, u8g_uint_t r)
<a name="l07078"></a>07078 {
<a name="l07079"></a>07079   u8g_uint_t xl, yu;
<a name="l07080"></a>07080 
<a name="l07081"></a>07081   <span class="keywordflow">if</span> ( <a class="code" href="u8glib__ex_8h.html#a4ed53b97d1b77b8ecaff352f5b1c6161">u8g_IsBBXIntersection</a>(u8g, x, y, w, h) == 0 )
<a name="l07082"></a>07082     <span class="keywordflow">return</span>;
<a name="l07083"></a>07083 
<a name="l07084"></a>07084   xl = x;
<a name="l07085"></a>07085   xl += r;
<a name="l07086"></a>07086   yu = y;
<a name="l07087"></a>07087   yu += r;
<a name="l07088"></a>07088 
<a name="l07089"></a>07089   {
<a name="l07090"></a>07090     u8g_uint_t yl, xr;
<a name="l07091"></a>07091 
<a name="l07092"></a>07092     xr = x;
<a name="l07093"></a>07093     xr += w;
<a name="l07094"></a>07094     xr -= r;
<a name="l07095"></a>07095     xr -= 1;
<a name="l07096"></a>07096 
<a name="l07097"></a>07097     yl = y;
<a name="l07098"></a>07098     yl += h;
<a name="l07099"></a>07099     yl -= r;
<a name="l07100"></a>07100     yl -= 1;
<a name="l07101"></a>07101 
<a name="l07102"></a>07102     <a class="code" href="u8glib__ex_8h.html#a5bec49fe7435bffb073bf2138cbaf80d">u8g_draw_circle</a>(u8g, xl, yu, r, <a class="code" href="u8glib__ex_8h.html#afc152466c13de315ad22628ac46037ee">U8G_DRAW_UPPER_LEFT</a>);
<a name="l07103"></a>07103     <a class="code" href="u8glib__ex_8h.html#a5bec49fe7435bffb073bf2138cbaf80d">u8g_draw_circle</a>(u8g, xr, yu, r, <a class="code" href="u8glib__ex_8h.html#ad8555b8e7a0b96d274bbbcc0dcab6c27">U8G_DRAW_UPPER_RIGHT</a>);
<a name="l07104"></a>07104     <a class="code" href="u8glib__ex_8h.html#a5bec49fe7435bffb073bf2138cbaf80d">u8g_draw_circle</a>(u8g, xl, yl, r, <a class="code" href="u8glib__ex_8h.html#a10b6b35f2ce7ce4fa654e65c17a1843e">U8G_DRAW_LOWER_LEFT</a>);
<a name="l07105"></a>07105     <a class="code" href="u8glib__ex_8h.html#a5bec49fe7435bffb073bf2138cbaf80d">u8g_draw_circle</a>(u8g, xr, yl, r, <a class="code" href="u8glib__ex_8h.html#a6ccafec75c745f31707599a188f00e1d">U8G_DRAW_LOWER_RIGHT</a>);
<a name="l07106"></a>07106   }
<a name="l07107"></a>07107 
<a name="l07108"></a>07108   {
<a name="l07109"></a>07109     u8g_uint_t ww, hh;
<a name="l07110"></a>07110 
<a name="l07111"></a>07111     ww = w;
<a name="l07112"></a>07112     ww -= r;
<a name="l07113"></a>07113     ww -= r;
<a name="l07114"></a>07114     ww -= 2;
<a name="l07115"></a>07115     hh = h;
<a name="l07116"></a>07116     hh -= r;
<a name="l07117"></a>07117     hh -= r;
<a name="l07118"></a>07118     hh -= 2;
<a name="l07119"></a>07119 
<a name="l07120"></a>07120     xl++;
<a name="l07121"></a>07121     yu++;
<a name="l07122"></a>07122     h--;
<a name="l07123"></a>07123     w--;
<a name="l07124"></a>07124     <a class="code" href="u8glib__ex_8h.html#a55ac399ed0646821596a6886aea0e34b">u8g_draw_hline</a>(u8g, xl, y, ww);
<a name="l07125"></a>07125     <a class="code" href="u8glib__ex_8h.html#a55ac399ed0646821596a6886aea0e34b">u8g_draw_hline</a>(u8g, xl, y+h, ww);
<a name="l07126"></a>07126     <a class="code" href="u8glib__ex_8h.html#a0d53baa01d614ca17974c795b8f3e4d3">u8g_draw_vline</a>(u8g, x,         yu, hh);
<a name="l07127"></a>07127     <a class="code" href="u8glib__ex_8h.html#a0d53baa01d614ca17974c795b8f3e4d3">u8g_draw_vline</a>(u8g, x+w, yu, hh);
<a name="l07128"></a>07128   }
<a name="l07129"></a>07129 }
<a name="l07130"></a>07130 
<a name="l07131"></a><a class="code" href="u8glib__ex_8h.html#a005bf8ce427b9f74b89a11f38bcf327f">07131</a> <span class="keywordtype">void</span> <a class="code" href="u8glib__ex_8h.html#a005bf8ce427b9f74b89a11f38bcf327f">u8g_DrawRBox</a>(<a class="code" href="struct__u8g__t.html">u8g_t</a> *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, u8g_uint_t r)
<a name="l07132"></a>07132 {
<a name="l07133"></a>07133   u8g_uint_t xl, yu;
<a name="l07134"></a>07134     u8g_uint_t yl, xr;
<a name="l07135"></a>07135 
<a name="l07136"></a>07136   <span class="keywordflow">if</span> ( <a class="code" href="u8glib__ex_8h.html#a4ed53b97d1b77b8ecaff352f5b1c6161">u8g_IsBBXIntersection</a>(u8g, x, y, w, h) == 0 )
<a name="l07137"></a>07137     <span class="keywordflow">return</span>;
<a name="l07138"></a>07138 
<a name="l07139"></a>07139   xl = x;
<a name="l07140"></a>07140   xl += r;
<a name="l07141"></a>07141   yu = y;
<a name="l07142"></a>07142   yu += r;
<a name="l07143"></a>07143 
<a name="l07144"></a>07144   xr = x;
<a name="l07145"></a>07145   xr += w;
<a name="l07146"></a>07146   xr -= r;
<a name="l07147"></a>07147   xr -= 1;
<a name="l07148"></a>07148 
<a name="l07149"></a>07149   yl = y;
<a name="l07150"></a>07150   yl += h;
<a name="l07151"></a>07151   yl -= r;
<a name="l07152"></a>07152   yl -= 1;
<a name="l07153"></a>07153 
<a name="l07154"></a>07154   <a class="code" href="u8glib__ex_8h.html#a14a403f9e58fc804686735528417defe">u8g_draw_disc</a>(u8g, xl, yu, r, <a class="code" href="u8glib__ex_8h.html#afc152466c13de315ad22628ac46037ee">U8G_DRAW_UPPER_LEFT</a>);
<a name="l07155"></a>07155   <a class="code" href="u8glib__ex_8h.html#a14a403f9e58fc804686735528417defe">u8g_draw_disc</a>(u8g, xr, yu, r, <a class="code" href="u8glib__ex_8h.html#ad8555b8e7a0b96d274bbbcc0dcab6c27">U8G_DRAW_UPPER_RIGHT</a>);
<a name="l07156"></a>07156   <a class="code" href="u8glib__ex_8h.html#a14a403f9e58fc804686735528417defe">u8g_draw_disc</a>(u8g, xl, yl, r, <a class="code" href="u8glib__ex_8h.html#a10b6b35f2ce7ce4fa654e65c17a1843e">U8G_DRAW_LOWER_LEFT</a>);
<a name="l07157"></a>07157   <a class="code" href="u8glib__ex_8h.html#a14a403f9e58fc804686735528417defe">u8g_draw_disc</a>(u8g, xr, yl, r, <a class="code" href="u8glib__ex_8h.html#a6ccafec75c745f31707599a188f00e1d">U8G_DRAW_LOWER_RIGHT</a>);
<a name="l07158"></a>07158 
<a name="l07159"></a>07159   {
<a name="l07160"></a>07160     u8g_uint_t ww, hh;
<a name="l07161"></a>07161 
<a name="l07162"></a>07162     ww = w;
<a name="l07163"></a>07163     ww -= r;
<a name="l07164"></a>07164     ww -= r;
<a name="l07165"></a>07165     ww -= 2;
<a name="l07166"></a>07166     hh = h;
<a name="l07167"></a>07167     hh -= r;
<a name="l07168"></a>07168     hh -= r;
<a name="l07169"></a>07169     hh -= 2;
<a name="l07170"></a>07170 
<a name="l07171"></a>07171     xl++;
<a name="l07172"></a>07172     yu++;
<a name="l07173"></a>07173     h--;
<a name="l07174"></a>07174     <a class="code" href="u8glib__ex_8h.html#abee278737d88e8d77b6d7994a98f1f11">u8g_draw_box</a>(u8g, xl, y, ww, r+1);
<a name="l07175"></a>07175     <a class="code" href="u8glib__ex_8h.html#abee278737d88e8d77b6d7994a98f1f11">u8g_draw_box</a>(u8g, xl, yl, ww, r+1);
<a name="l07176"></a>07176     <span class="comment">//u8g_draw_hline(u8g, xl, y+h, ww);</span>
<a name="l07177"></a>07177     <a class="code" href="u8glib__ex_8h.html#abee278737d88e8d77b6d7994a98f1f11">u8g_draw_box</a>(u8g, x, yu, w, hh);
<a name="l07178"></a>07178     <span class="comment">//u8g_draw_vline(u8g, x+w, yu, hh);</span>
<a name="l07179"></a>07179   }
<a name="l07180"></a>07180 }
</pre></div></div><!-- contents -->
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Defines</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

  <div id="nav-path" class="navpath">
    <ul>
      <li class="navelem"><a class="el" href="u8glib__ex_8h.html">u8glib_ex.h</a>      </li>

    <li class="footer">Generated on Mon Dec 30 2013 18:53:02 for Repetier-Firmware by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.6.1 </li>
   </ul>
 </div>


</body>
</html>
